给出以下域结构:

Book {
    static hasMany = [tags: Tag]
}

Tag {
    String name
}

我正在尝试找到一种方法,给定Book,我可以找到包含该书中任何标签的其他任何书。

我试过了:
Book.findAllByTagsInList(myBook.tags)

但正如预期的那样,“列表中的列表”查询未产生所需的结果。

最佳答案

您可以将条件用作

def books = Book.createCriteria().listDistinct{
    tags{
        'in'('id', myBook.tags*.id)
    }
}

或使用HQL作为
def books = Book.executeQuery("select distinct b from Book as b \
                               inner join b.tags as tag \
                               where tag.id in (:tags)",
                               [tags: myBook.tags*.id])

关于sql - Grails:HasMany交集查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19252444/

10-10 08:57
查看更多