Est-il possible d'implémenter la requête suivante en utilisant l'API Criteria?Hibernate Criteria API équivalent pour "elements()"
select order from ORDER as order,ITEM as item
where item.itemID like 'ITM_01' and item in elements(order.items)
Est-il possible d'implémenter la requête suivante en utilisant l'API Criteria?Hibernate Criteria API équivalent pour "elements()"
select order from ORDER as order,ITEM as item
where item.itemID like 'ITM_01' and item in elements(order.items)
Pour répondre à la question dans le titre - non, il n'y a pas d'équivalent direct pour elements()
dans l'API Critères. Cependant, l'utilisation de elements()
de votre requête est superflue. Il peut au contraire être plus simplement réécrite comme
select order from ORDER as order
where order.items.itemID like 'ITM_01'
critères équivalents devrait utiliser par exemple des critères imbriqués pour accéder à la collection:
session.createCriteria(Order.class)
.createCriteria("items")
.add(Restrictions.like("itemID", "ITM_01"));
Une autre alternative consiste à utiliser les alias:
session.createCriteria(Order.class)
.createAlias("items", "item")
.add(Restrictions.like("item.itemID", "ITM_01"));
Remarque que vous n'avez pas besoin d'utiliser LIKE
pour une valeur fixe, vous pouvez utiliser l'égalité simple à la place.