Hibernate Criteria API等效于“elements()”

时间:2009-11-06 15:21:13

标签: hibernate criteria

是否可以使用Criteria API实现以下查询?

select order from ORDER as order,ITEM as item 
where item.itemID like 'ITM_01' and item in elements(order.items)

1 个答案:

答案 0 :(得分:3)

要回答标题中的问题 - 否,在Criteria API中没有elements()的直接等效项。

但是,您的查询使用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作为固定值,而是可以使用简单的相等。