Java 缺少addTo方法

Java 缺少addTo方法,java,grails,Java,Grails,我试图在Grails中使用addTo*方法将一个类转换为另一个类。这些类具有多对多关系。我已经定义了在第一节课中有许多 static hasMany = [operators: Operator] 在另一方面也做了同样的事情: static hasMany = [matches: MatchDB] 我已经设置了关系的所有者: static belongsTo = MatchDB 但是,当我尝试访问addToOperators时,如下所示: def matchDBInstance = Mat

我试图在Grails中使用
addTo*
方法将一个类转换为另一个类。这些类具有多对多关系。我已经定义了
在第一节课中有许多

static hasMany = [operators: Operator]
在另一方面也做了同样的事情:

static hasMany = [matches: MatchDB]
我已经设置了关系的所有者:

static belongsTo = MatchDB
但是,当我尝试访问
addToOperators
时,如下所示:

def matchDBInstance = MatchDB.get(result.matchId);
Operator operatorInstance = Operator.get(result.operatorId);
matchDBInstance.addToOperators(operatorInstance);
matchDBInstance.save(flush: true);
我看到以下错误:

groovy.lang.MissingMethodException: No signature of method: footballservices.MatchDB.addToOperators() is applicable for argument types:   (footballservices.Operator) values: [footballservices.Operator : Op1]
Possible solutions: getOperators()
at footballservices.RestfulController.mapOperator(RestfulController.groovy:63)
at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198)
at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.java:53)
at grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter.doFilter(RequestHolderAuthenticationFilter.java:49)
at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:82)
at com.brandseye.cors.CorsFilter.doFilter(CorsFilter.java:82)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
我已经试过了。

我花了一些时间在网上搜寻。我已经运行了
grailsclean
,但没有任何帮助。我还试图补充:

List<Operator> operators;
列出操作符;
MatchDB
类,但这也没有做任何事情

我已经确认
matchDBInstance
operatorInstance
都不为空

详细信息


我正在Windows 7机器上运行Grails 2.4.3和JDK 7。

确保这两个域类都有相应的
包。这应该是两个文件的第一行。你是用grails
createdomain
创建的还是复制粘贴的

您可以对这两个文件分别进行单元测试,然后一起进行,以查看它们是否存在导致此问题的其他问题


关于域类的更多信息也很好,你能提供完整的代码吗?

确保两个域类都有相应的
包。这应该是两个文件的第一行。你是用grails
createdomain
创建的还是复制粘贴的

您可以对这两个文件分别进行单元测试,然后一起进行,以查看它们是否存在导致此问题的其他问题


关于域类的更多信息也很好,您能提供完整的代码吗?

这是Grails 2.4.2版中报告的一个bug 看

我运行的是Grails2.4.3,但在集成测试中仍然遇到了这种情况。
一旦我更改了集成测试以扩展IntegrationSpec,这个问题就消失了。

这是Grails 2.4.2版中报告的一个错误 看

我运行的是Grails2.4.3,但在集成测试中仍然遇到了这种情况。
一旦我更改了集成测试以扩展IntegrationSpec,这个问题就消失了。

在MatchDB类中,是否有以addTo开头的方法?否。而且我们从来没有。@MeiravLeibowitz
addTo*
方法是由Grails在编译时通过AST或在运行时通过元编程添加到域类中的。它们永远不会出现在域类本身的源代码中。@Dónal是的,但如果您有以
addTo
开头的方法,则可能会干扰此过程。我想这就是Meirav的意思。@Dónal是的,方法(名称)的模糊性,当然还有MatchDB类中不同的参数,你有以addTo开头的方法吗?没有。而且我们从来没有。@MeiravLeibowitz
addTo*
方法是由Grails在编译时通过AST或在运行时通过元编程添加到域类中的。它们永远不会出现在域类本身的源代码中。@Dónal是的,但如果您有以
addTo
开头的方法,则可能会干扰此过程。我想这就是Meirav的意思。@Dónal是的,方法(名称)的模糊性,当然还有不同的参数。这并不能真正回答这个问题。如果你需要要求作者做出如此多的澄清,那么你应该在问题下方留下评论——你可以随时在自己的帖子上发表评论,一旦你有足够的内容,你就可以发表评论。这并不能真正为问题提供答案。如果你需要要求作者做出如此多的澄清,那么你应该在问题下方留下评论——你可以随时在自己的帖子上发表评论,一旦你有足够的内容,你就可以发表评论了。