Возможно ли реализовать следующий запрос с использованием API критериев?API-интерфейс Hibernate Criteria API для «elements()»
select order from ORDER as order,ITEM as item
where item.itemID like 'ITM_01' and item in elements(order.items)
Возможно ли реализовать следующий запрос с использованием API критериев?API-интерфейс Hibernate Criteria API для «elements()»
select order from ORDER as order,ITEM as item
where item.itemID like 'ITM_01' and item in elements(order.items)
Чтобы ответить на этот вопрос в названии - нет, нет прямого эквивалента для elements()
в Criteria API.
Тем не менее, использование вашего запроса elements()
является излишним. Вместо этого он может быть более просто переписать в виде
select order from ORDER as order
where order.items.itemID like 'ITM_01'
эквивалентных критериев придется использовать экземпляр вложенности критерии для доступа к коллекции:
session.createCriteria(Order.class)
.createCriteria("items")
.add(Restrictions.like("itemID", "ITM_01"));
Другой альтернативой является использование псевдонимов:
session.createCriteria(Order.class)
.createAlias("items", "item")
.add(Restrictions.like("item.itemID", "ITM_01"));
Примечание что для фиксированного значения вам не нужно использовать LIKE
, вместо этого вы можете использовать простое равенство.