【问题标题】:Need to equate more than one property in criteria on joining the tables需要在加入表格的标准中等同于多个属性
【发布时间】:2019-12-16 21:00:57
【问题描述】:

我需要使用条件实现以下代码。

left join A a ON a.id = o.id
        and a.rules_id = b.id 
        and a.global_id = gd.id
        WHERE  m.org_name = 'PQR'

但是当我添加这样的标准时

 criteria = criteria.createAlias("a", "a", JoinType.LEFT_OUTER_JOIN,
                    Restrictions.eqProperty("a.id", "b.id")).add(Restrictions.eqProperty("a.rules_id", "b.id")).add(Restrictions.eqProperty("a.global_id", "gd.id"));

它在查询的 where 子句中如下所示:

  left join A a ON a.id = o.id
        WHERE  m.org_name = 'PQR'  and a.rules_id = b.id 
        and a.global_id = gd.id

谁能帮我写出正确的代码,怎样才能使连接条件正确?

我试过这个:

criteria = criteria.createAlias("a", "a", JoinType.LEFT_OUTER_JOIN,
                    Restrictions.eqProperty("a.id", "b.id")).add(Restrictions.eqProperty("a.rules_id", "b.id")).add(Restrictions.eqProperty("a.global_id", "gd.id"));

需要这种查询:

left join A a ON a.id = o.id
        and a.rules_id = b.id 
        and a.global_id = gd.id
        where  m.org_name = 'PQR'

【问题讨论】:

    标签: hibernate hibernate-criteria restriction


    【解决方案1】:

    在这种情况下,我们需要使用限制连词。

    criteria = criteria.createAlias("a", "a", JoinType.LEFT_OUTER_JOIN,
                    Restrictions.conjunction(
                    Restrictions.eqProperty("a.id","o.id"),
                    Restrictions.eqProperty("a.rules_id", "b.id")));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-16
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      • 2017-08-14
      相关资源
      最近更新 更多