如何在一次查询 MTM 中查询所有拥有的对象?
How to query all the owned objects in one query MTM?
我有一个多对多关系的拥有方列表。如何使用 Grails GORM 在一个查询中查询所有拥有的对象?在 SQL 中,我将使用连接 table 和拥有的 table 以及拥有 table 的 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)
}
这是您要找的吗?
Book.findAllByAuthorInList(authors)
您需要先加入作者:
def books = Book.withCriteria {
authors {
inList('id', authors*.id)
}
}
我有一个多对多关系的拥有方列表。如何使用 Grails GORM 在一个查询中查询所有拥有的对象?在 SQL 中,我将使用连接 table 和拥有的 table 以及拥有 table 的 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)
}
这是您要找的吗?
Book.findAllByAuthorInList(authors)
您需要先加入作者:
def books = Book.withCriteria {
authors {
inList('id', authors*.id)
}
}