我有一个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型事故,他们还没有任何属性,这个查询也没有返回它们。
答案 0 :(得分:0)
内部联接意味着只有具有属性的事故才会出现在结果集中。您应该尝试使用左连接
criteria.createAlias("accidentAttribsSet", "accidentAttrib", JoinType.LEFT.ordinal());