如何让 grails 从多对多关系的两边生成 addTo* 方法
How to make grails generate addTo* methods from both sides of many-to-many relationship
我正在尝试通过 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]
将 Publication 的所有权更改为 Person 似乎不起作用。我做错了什么?
我已尝试重现该问题,但它似乎对我来说工作正常,例如:
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
我正在尝试通过 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]
将 Publication 的所有权更改为 Person 似乎不起作用。我做错了什么?
我已尝试重现该问题,但它似乎对我来说工作正常,例如:
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