1

所以我试图在 BootStrap.groovy 中加载一些测试数据,但在创建一个具有一对多 FK 关系的对象时遇到了麻烦......

这些是域类(示例):

class Book {    
     static hasOne = BookCategory
     String name
    }

和...

class BookCategory {
     static belongsTo = Book
     static hasMany = [books : Book]
     String name
    }

在 Bootstrap.groovy 中:

def romanceCat = new BookCategory(name: 'Romance').save(flush: true)
def horrorCat = new BookCategory(name: 'Horror').save(flush: true)

def firstBook = new Book(name: 'Kujo', category_id: horrorCat).save(flush: true)

类别是在 postgres 中创建的,但本书不是。我怀疑我没有正确的语法来引用我的新 Book() 中的 FK,但我似乎找不到类似的示例并且尝试了几种变体。IE。BookCategory:恐怖猫,BookCategory.id:恐怖猫等。

4

1 回答 1

2

您需要在以下位置定义BookCategory属性的名称Book

class Book {
  static hasOne = [bookCategory:BookCategory]
}

你的引导程序应该是:

def romanceCat = new BookCategory(name: 'Romance').save(flush: true)
def horrorCat = new BookCategory(name: 'Horror').save(flush: true)

def firstBook = new Book(name: 'Kujo', bookCategory: horrorCat).save(flush: true)
于 2013-08-15T20:26:00.347 回答