好的,下面的查询:
SELECT O.*, P.* FROM ORDERS O, PRODUCT P WHERE
O.ORDER_ID=P.ORDER_ID AND P.ID=’1234’;
可以按如下标准完成:
List ordersAndProducts = session.createCriteria(Order.class)
.setFetchMode(“products”,FetchMode.JOIN)
.add(Restrictions.eq(“id”,”1234”))
.list();
但在这儿Criteria.list()
返回一个List<Object[]>
where Object[0]
is an Order
and Object[1]
is a Product
对于列表中的每个元素。
但是我如何使用 Criteria 执行以下 SQL:
SELECT O.* FROM ORDERS O, PRODUCT P WHERE
O.ORDER_ID=P.ORDER_ID AND P.ID=’1234’;
换句话说,我想要Criteria.list()
给我一个List<Order>
,我不关心Products
。我尝试过使用createAlias()
代替setFetchMode()
但结果是相同的,并且投影不允许您指定实体,而只能指定属性。
您可以使用.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)
关于标准。
List ordersAndProducts = session.createCriteria(Order.class)
.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)
.setFetchMode(“products”,FetchMode.JOIN)
.add(Restrictions.eq(“id”,”1234”))
.list();
现在,您检索包含急切加载的产品的所有订单。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)