如何让 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