我有类(class):
class Person {
static hasMany = [tags: Tag]
}
class Tag {
}
为了从tagList中获得至少拥有一个标签的人,我可以创建一个条件
public Criteria hasAtLeastOneOf(List<Tag> tagList) {
return Person.createCriteria().buildCriteria {
'tags' {
'in' 'id', tagList.collect{it.id}
}
}
}
我需要创建什么样的标准才能从tagList中获得拥有每个标签的所有人(例如,tagList [0]和tagList [1]等)
最佳答案
类似于这个未解决的问题:
Grails 2.5.1 (hibernate 3) criteria multiple joins to same table
简而言之,您需要在“人员”和“标签”之间进行多个联接,对于要比较的列表中的每个标签,一个联接。就像对链接问题的评论所描述的那样,可以在HQL中通过手动建立联接来完成,但是标准(似乎?)不支持这一点。