4
是否可以使用Criteria 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)
是否可以使用Criteria 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中没有直接等效于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
作为固定值,您可以使用简单的等式替代。