例如,我有一个父类Author:
class Author {
String name
static hasMany = [
fiction: Book,
nonFiction: Book
]
}
和一个 child 类的书:
class Book {
String title
static belongsTo = [author: 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()
如何找到按父级分类的子级记录和按子级分类的父级记录?
我尝试使用findBy方法,如下所示:
def book = Book.get(1)
def author = Author.findByFiction(book)
但我得到一个错误:
Parameter "#2" is not set; SQL statement:
我读到,在某种关系中findBy被拒绝使用了什么,如何使用标准或其他方法重写它呢?
最佳答案
当您添加此belongsTo
时
static belongsTo = [author: Author]
这会触发添加一个类型为
author
的名为Author
的属性(通过在编译过程中进行AST转换),就像声明Author author
但不要那样做,那将是多余的。
因此,如果您有一本书,可以通过该属性访问
Author
:def book = Book.get(1)
def author = book.author
关于grails - Grails,Gorm,使用createCriteria或其他替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29720744/