Grails 格雷斯,戈姆。按父查找子对象和按子对象查找父对象
例如,我有一个父类作者:Grails 格雷斯,戈姆。按父查找子对象和按子对象查找父对象,grails,gorm,Grails,Gorm,例如,我有一个父类作者: class Author { String name static hasMany = [ fiction: Book, nonFiction: Book ] } 还有一本儿童读物: class Book { String title static belongsTo = [author: Author] } 我已经使用以下方法编写了一些记录: def fictBook =
class Author {
String name
static hasMany = [
fiction: Book,
nonFiction: Book
]
}
还有一本儿童读物:
class Book {
String title
static belongsTo = [author: Author]
}
我已经使用以下方法编写了一些记录:
def fictBook = new Book(title: "IT")
def nonFictBook = new Book(title: "On Writing: A Memoir of the Craft")
def a = new Author(name: "Stephen King")
.addToFiction(fictBook)
.addToNonFiction(nonFictBook)
.save()
我怎样才能按父类查找子类记录,按子类查找父类记录?在我看来,这不是建模数据的最佳方法。我会这样做
class Author {
String name
static hasMany = [books: Book]
}
class Book {
String title
BookTypes bookType
static belongsTo = [author: Author]
}
enum BookTypes {
FICTION,
NON_FICTION
}
然后,您可以像这样进行查找
def author = Author.get(1)
def nonFictionByAuthor = Book.findAllByAuthorAndBookType(author, BookTypes.NON_FICTION)
你也可以这样做
def author = Author.get(1)
def fictionBooks = author.books.findAll { it.bookType == BookTypes.FICTION }
然后反过来说:
def fictionBook = Book.findByTitleAndBookType('Title001', BookTypes.FICTION)
在我看来,这不是为数据建模的最佳方式。我会这样做
class Author {
String name
static hasMany = [books: Book]
}
class Book {
String title
BookTypes bookType
static belongsTo = [author: Author]
}
enum BookTypes {
FICTION,
NON_FICTION
}
然后,您可以像这样进行查找
def author = Author.get(1)
def nonFictionByAuthor = Book.findAllByAuthorAndBookType(author, BookTypes.NON_FICTION)
你也可以这样做
def author = Author.get(1)
def fictionBooks = author.books.findAll { it.bookType == BookTypes.FICTION }
然后反过来说:
def fictionBook = Book.findByTitleAndBookType('Title001', BookTypes.FICTION)