已解决:将联接类型更改为INNER_JOIN
我正在尝试在执行hibernate条件后获取域类的原始表项。
例如:
域类A与域类B具有hasMany关联。
具有id 1的A的实体具有B的两个实体,其具有ID 11和12。
我正在执行以下标准:
Criteria criteria = session.createCriteria(A.class)
criteria.createAlias("Bs","B",CriteriaSpecification.LEFT_JOIN)
criteria.add(Restrictions.like("B.property", "%"+something+"%")
def list=criteria.list().unique()
现在我有一个包含A的所有实体的结果集,它有一个B的实体,它满足标准。
但是A的结果与A的原始实体不同,关于与B的hasMany关系.B的实体没有满足标准。
例如:ID为1的实体A只获得ID为11的权利B.
即使我执行了
def newA=A.findById(list[0])
newA
只获得了ID为11的B实体。而且缺少了12个。
任何想法?
答案 0 :(得分:0)
请参阅:http://adhockery.blogspot.com/2009/06/querying-by-association-redux.html和http://jira.grails.org/browse/GRAILS-7087
试试这个:
def list = A.withCriteria {
createAlias("bs", "aliasedBs")
like("aliasedBs.property", "%something")
}
list.bs // will contain ALL items of the association, independent of the query