Hibernate条件别名生成innej join,它会占用查询结果

时间:2015-12-11 21:03:00

标签: java hibernate

我有一个DAO,它使用搜索事故的criteria.list()搜索对象。它应该返回以下事故:

1)有类型A和accidentAttribs(映射为集合但内部只有一个元素)TITLE = Test

2)所有其他不属于A类的事故,即使它们没有任何属性

创建此别名:

 criteria.createAlias("accidentAttribsSet", "accidentAttrib");

在两个表之间进行内连接,不返回没有属性的事故..

criteria.createAlias("accidentAttribsSet", "accidentAttrib");
                    criteria = criteria.add(Restrictions.or(

                                    Restrictions.not(Restrictions.eq("type", "A")),
                                    Restrictions.and( Restrictions.eq("type", "A"),Restrictions.eq("accidentAttrib.title", "Test") )
                                    )

                    );

我db我发生了B型事故,他们还没有任何属性,这个查询也没有返回它们。

1 个答案:

答案 0 :(得分:0)

内部联接意味着只有具有属性的事故才会出现在结果集中。您应该尝试使用左连接

criteria.createAlias("accidentAttribsSet", "accidentAttrib", JoinType.LEFT.ordinal());