我试图通过Grails 2.4.4(标准ggts 3.6.3包)创建一个简单的发布数据库。 我的域类看起来像这样:
class Person {
...
static hasMany = [publications: Publication]
static belongsTo = [Publication]
}
class Publication {
...
static hasMany = [authors : Person]
}
问题在于,当我尝试使用以下代码从BootStrap中的某个脚本预填充数据库时:
Publication publication = new Publication(...)
.addToAuthors(somePerson)
.save();
我得到:No signature of method: Publication.addToAuthors() is applicable for argument types: (Person) values: [Person : 1]
从发布到人员的相关所有权变更似乎不起作用。我做错了什么?
答案 0 :(得分:1)
我试图重现这个问题,但似乎对我来说很好,例如:
class Person {
String name
static hasMany = [publications: Publication]
static belongsTo = [Publication]
}
和
class Publication {
Date pubYear
static hasMany = [authors : Person]
}
并且在Controller中我创建了一个Publication对象,并为此Publication实例添加了两个Person对象,并且每个工作正常,因为我可以看到保存在DB中的条目。
new Publication(pubYear: new Date()).addToAuthors(new Person(name: "Abdullah"))
.addToAuthors(new Person(name: "Mohd"))
.save(flush: true)
有关详细信息,请参阅Doc