Grails Hibernate Criteria:获取原始表条目

时间:2011-11-17 13:34:53

标签: hibernate grails criteria

已解决:将联接类型更改为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个。

任何想法?

1 个答案:

答案 0 :(得分:0)

请参阅:http://adhockery.blogspot.com/2009/06/querying-by-association-redux.htmlhttp://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