如何使grails从多对多关系的两边生成addTo *方法

时间:2015-01-01 13:11:39

标签: grails many-to-many

我试图通过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]

从发布到人员的相关所有权变更似乎不起作用。我做错了什么?

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