2009-11-06 1 views

ответ

3

Чтобы ответить на этот вопрос в названии - нет, нет прямого эквивалента для 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, вместо этого вы можете использовать простое равенство.