grails - Grails,Gorm,使用createCriteria或其他替代方法

标签 grails gorm

例如,我有一个父类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/

相关文章:

grails - Grails验证进入循环,永不中断

hibernate - 将 Grails + Hibernate 应用扩展到单台机器之外

java - 无法运行路径设置为 Java 6 的 Grails 2.1

grails - 如何构造Grails Services,使父类(super class)方法是非事务性的而子类方法是事务性的?

hibernate - Grails NonUniqueObjectException:具有相同标识符值的另一个对象已与 session 关联

grails - Grails-如何在查询前替换属性?

grails - 指定候选关键字?

grails - hasMany 字符串的 HQL 问题

sql - 如何在查询之后正确列出的地方执行SQl?

grails - 具有角色ROLE_ADMIN的用户的Grails Security 3.1.2登录显示ROLE_NO_ROLES为权限