我有类(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中通过手动建立联接来完成,但是标准(似乎?)不支持这一点。

09-25 17:50