【问题标题】:Spurious MissingMethodException, Grails 2.2.5虚假的 MissingMethodException,Grails 2.2.5
【发布时间】:2017-10-07 10:14:19
【问题描述】:

我突然开始在我的 Grails 2.2.5 应用程序中收到 MissingMethodException,代码没有任何更改,而且该错误似乎是虚假的,所以我怀疑某处存在损坏。我收到此错误:

No signature of method: arthurs.Sale.findByCustomerAndComplete() is applicable for argument types: (arthurs.Customer, java.lang.Boolean) values: [arthurs.Customer : 59, false]
Possible solutions: findByCustomerAndComplete([Ljava.lang.Object;). Stacktrace follows:
Message: No signature of method: arthurs.Sale.findByCustomerAndComplete() is applicable for argument types: (arthurs.Customer, java.lang.Boolean) values: [arthurs.Customer : 59, false]
Possible solutions: findByCustomerAndComplete([Ljava.lang.Object;)

直到昨天这一切都很好。 Sale 类实际上具有“customer”(客户类)和“complete”(布尔)属性,并且我检查过我传递的参数是否有效。无论如何,错误消息确实指定了参数类型,并且这些都是正确的。

那么为什么我的动态 'findBy...' 方法会突然停止工作?过去,我经常发现执行“grails clean”通常可以解决此类问题,但它似乎对此没有帮助。

还有什么我应该清除的,给自己一张白纸吗?

【问题讨论】:

    标签: grails


    【解决方案1】:

    好吧,不知道那里发生了什么,但是从“.grails/2.2.5/projects”中删除项目文件夹就可以了。

    稍后:不,问题又回来了。现在对此非常困惑。

    稍后:嗯,我现在已经确定是什么触发了这个问题,尽管我完全不知道为什么会这样。如果我将 Date 类型的“created”属性添加到我的 Sale 类中,问题会再次出现并一直存在,直到我删除该属性、从 MySQL 表中删除该列并删除项目文件夹。但是,如果我在约束中将此属性标记为可为空,则它可以正常工作。 ???

    【讨论】:

    • 您是否尝试使用 where、criteria 或 hql 查询来查看是否有不同的行为者?
    • 不,我没有。当它第一次出现时,我能够解决这个问题,def sale = customer.sales.find{it.complete==false},它以不同的方式做同样的事情。不过,重点是我的代码没有任何问题。我对换掉一些应该不起作用的代码感到不安,我宁愿在其他地方找到潜在的问题。
    猜你喜欢
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多