Grails GORM MissingMethodException与1:N关系
我有这样的域类:Grails GORM MissingMethodException与1:N关系,grails,groovy,gorm,Grails,Groovy,Gorm,我有这样的域类: class ServicesGroup { Long id String name String description String toString(){ return name } static mapping = { version false table 'root.services_groups' id column:'group_id'
class ServicesGroup {
Long id
String name
String description
String toString(){
return name
}
static mapping = {
version false
table 'root.services_groups'
id column:'group_id'
name column:'group_name'
description column:'group_desc'
}
}
及
关系是-一个ServicesGroup条目可以有多个步骤实例
然而,当我在控制器中时,我尝试
Step.findByService(3)
我得到:
"org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: Step.findByService() is applicable for argument types: (java.lang.Integer) values: {3}"
但是,当我更改步骤域类字段时
ServicesGroup service
简单地
Long service
它起作用了
这是怎么回事?试试看
grails clean
grails run-app
然后再试一次。再试一次
grails clean
grails run-app
然后再试一次。这样做:
Step.findByService(ServicesGroup.get(3))
试着这样做:
Step.findByService(ServicesGroup.get(3))
类似Step.findByService([id:3])的东西可能会起作用。出于SQL生成的目的,它只关心ID。在很多这样的情况下,你可以扔一张假地图到那里,而不是真的地图,这样可以节省一些性能
另一方面,当您这样做时,抽象会出现一些问题。类似于Step.findByService([id:3])的东西可能会起作用。出于SQL生成的目的,它只关心ID。在很多这样的情况下,你可以扔一张假地图到那里,而不是真的地图,这样可以节省一些性能
另一方面,当您这样做时,抽象会有点崩溃。这很有效!你能告诉我为什么吗?类似于。。服务字段声明为ServicesGroup对象,因此如果我想使用服务搜索内容,我必须使用给定类型的对象?有没有更直接的方法可以在不嵌套findBy*/get的情况下获得相同的结果?谢谢请参阅下面的其他答案。第三种方法是使用Hibernate标准并执行步骤.withCriteria{service{eq(“id”,3)}}。这很有效!你能告诉我为什么吗?类似于。。服务字段声明为ServicesGroup对象,因此如果我想使用服务搜索内容,我必须使用给定类型的对象?有没有更直接的方法可以在不嵌套findBy*/get的情况下获得相同的结果?谢谢请参阅下面的其他答案。第三种方法是使用Hibernate标准并执行步骤.withCriteria{service{eq(“id”),3}}。需要在下一个版本中修复。此解决方案不仅解决了此问题,还解决了许多问题。需要在下一版本中修复。这个解决方案不仅解决了这个问题,还解决了很多问题。