Grails,Gorm,使用createCriteria或其他替代方案

时间:2015-04-18 17:49:16

标签: grails gorm

例如,我是父类作者:

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()

我怎样才能通过孩子的父母和父母类记录找到孩子级记录?

我尝试使用findBy方法,如下所示:

def book = Book.get(1)
def author = Author.findByFiction(book)

但是我收到了一个错误:

Parameter "#2" is not set; SQL statement:

我读过,在某些关系中,findBy被拒绝使用,我如何使用标准或其他方法重写它?

1 个答案:

答案 0 :(得分:1)

添加此belongsTo

static belongsTo = [author: Author]

这会触发添加名为author的{​​{1}}类型的属性(在编译期间通过AST转换),实际上就像声明

一样
Author

但不要这样做,这是多余的。

因此,如果您有一本书,可以通过该属性访问Author author

Author