Hibernate Criteria - 如何将连接结果限制为单个实体类型?

2024-03-08

好的,下面的查询:

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(使用前将#替换为@)

Hibernate Criteria - 如何将连接结果限制为单个实体类型? 的相关文章

随机推荐