【问题标题】:Hibernate criteria results in redundant left outer join in the generated SQLHibernate 标准导致生成的 SQL 中出现多余的左外连接
【发布时间】:2013-09-05 20:08:18
【问题描述】:

我在使用 hibernate 进行一对多映射时遇到一个问题。

我有 2 个课程,PersonAddressPersonAddress 映射(一对多)。我想得到所有人where Address = "xxxx" and person_name like '%8888%'。我已经定义了具有多对一关系的 Person 和地址类的休眠映射文件

Criteria criteria = session.createCriteria(Person.class,"per")
    .add(Restrictions.eq("fname", obj.getInt("fname")))             
    .createCriteria("Addresses","add")                  .add(Restrictions.ilike("address",fieldValue,MatchMode.ANYWHERE));

在生成的查询中添加了多余的左连接以及默认的内连接。如何从查询中禁用/删除左外连接。

【问题讨论】:

    标签: hibernate


    【解决方案1】:

    试试这个:

    Criteria criteria = session.createCriteria(Person.class,"per")
        .createAlias("per.addresses","add")
        .add(Restrictions.eq("per.fname", obj.getInt("fname")))
        .add(Restrictions.ilike("add.address",fieldValue,MatchMode.ANYWHERE));
    

    【讨论】:

      猜你喜欢
      • 2017-08-19
      • 2014-04-26
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 2014-03-21
      • 1970-01-01
      • 2012-02-02
      相关资源
      最近更新 更多