1

我们在使用 grails 的生产环境中不断出现以下错误。它说给定的域类没有 get 方法。这种情况每隔几天就会在每分钟执行大约 300 次的代码上发生一次。我们无法重现它。

No signature of method: static DomainClass.get() is applicable for argument types: (java.lang.Long) values: [97]

有没有其他人遇到过这个问题?我们正在使用 grails 1.3.6。我们域类上的 id 是 gorm 默认值。我们正在运行 sun jvm 版本 1.6.0_17-b04。

更新:

今天发生错误时,我发现了更多信息。我们正在使用 JMS grails 插件,错误发生在接收 JMS 消息的类之一中。看起来 JMS 插件在 grails 完成引导应用程序之前开始传递消息。如果 grails 启动时队列中有消息,则异常开始出现在日志中。一旦 grails 一直启动,错误就会停止并且消息会正常处理。我的猜测是 grails 中的 spring 上下文是在将动态方法添加到 Domain 类之前启动的。

4

2 回答 2

0

正如您所说,域类的 id 是 GORM 默认值,因此 hvgotcodes 指出的 Grails Jira 中的错误不适用于您的情况(它们处理字符串 id)。

我猜它可能在某个地方,转移到 get() 方法的参数不是“长类型”。很容易漏掉,比如 GET/POST 方法(GORM 默认)传递的参数 'id' 是字符串类型,使用前需要转换成 Long。

例如:

def id = params.id
def object = DomainClass.get(id as Long)
于 2011-02-19T02:16:57.877 回答
0

你可能会遇到这个问题

http://jira.codehaus.org/browse/GRAILS-4467

有点奇怪的是这种情况只是经常发生。您确定经常调用失败的实际方法吗?

于 2011-02-18T17:48:27.017 回答