我列出了多对多关系的拥有方。如何使用Grails GORM查询一个查询中的所有拥有对象?在SQL中,我将使用连接表和拥有的表以及拥有表的id与in子句。
示例域类:
class Book {
static belongsTo = Author
static hasMany = [authors:Author]
String title
}
class Author {
static hasMany = [books:Book]
String name
}
所以我有一个列表或一组作者,我想在一个查询中找到他们所有的书。
select b.*
from book b
join author_book ab on b.id = ab.book_id
where ab.author_id in (1, 2, 3);
在Grails中,我尝试了以下但是失败了。
def books = Book.withCriteria {
inList('authors', authors)
}
答案 0 :(得分:0)
这是你正在寻找的吗?
Book.findAllByAuthorInList(authors)
答案 1 :(得分:0)
您需要先加入作者:
def books = Book.withCriteria {
authors {
inList('id', authors*.id)
}
}