Hibernate标准导致生成的SQL中出现冗余的左外连接

时间:2013-09-02 17:02:25

标签: hibernate

我在使用hibernate的一对多映射中遇到了一个问题。

我有2个课程,PersonAddressPerson映射Address(一对多)。我想得到所有人where Address = "xxxx" and person_name like '%8888%'。我已经使用Person和地址类定义了hibernate映射文件,其中包含多对一关系

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

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

1 个答案:

答案 0 :(得分:0)

试试这个:

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));
相关问题