我们在使用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一直启动,错误就会停止,消息会正常处理。我的猜测是,在将动态方法添加到Domain类之前,grails中的spring上下文已经开始。
答案 0 :(得分:0)
答案 1 :(得分:0)
正如你所说,你的域类的id是GORM默认值,所以hvgotcodes指出的Grails Jira中的错误不适用于你的情况(它们处理字符串id)。
我猜它可能在某个地方,转换为get()方法的参数不是“Long类型”。很容易错过,例如,GET / POST方法(GORM默认)传输的参数'id'是字符串类型,需要在使用之前转换为Long。
例如:
def id = params.id
def object = DomainClass.get(id as Long)