是否可以使用Criteria API实现以下查询?
select order from ORDER as order,ITEM as item
where item.itemID like 'ITM_01' and item in elements(order.items)
答案 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
作为固定值,而是可以使用简单的相等。