Grails/GORM: 没有方法签名适用于参数类型

Grails/GORM: No signature of method is is applicable for argument types

我正在尝试使用 Grails 2.4.4 构建一个基本的博客应用程序。我的领域模型如下:

class Commentable {
  String title
  static hasMany = [comments:Comment]   
}

class Comment extends Commentable {
  static belongsTo = [target:Commentable]
}

class Post extends Commentable {
  static hasMany = [tags:Tag]
}

class Tag {
  String label
  static hasMany = [posts:Post]
  static belongsTo = Post
}

在 BootStrap.groovy 的 init 方法中,我尝试创建一个 Post 和一个 Tag,如下所示

def post = new Post();
post.setTitle("Post1");
post.save();

def tag = new Tag();
tag.setLabel("Tag1");
tag.save();

tag.addToPost(post);
tag.save();

产生以下错误消息:

Message: No signature of method: io.dimitris.blog.Tag.addToPost() is 
applicable for argument types: (io.dimitris.blog.Post) values: 
[io.dimitris.blog.Commentable : 1]
Possible solutions: addToPosts(java.lang.Object)

任何关于我做错了什么的提示都将不胜感激。

您正在呼叫 tag.addToPost(post),但您需要 tag.addToPosts(post)hasMany 属性 是 static hasMany = [posts:Post]。该映射中的键指示方法名称。如果您将其更改为 static hasMany = [post:Post],则该方法将是 addToPost(post),但名称会变得不那么有意义。