我有这样的域类:
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'
}
}
和
class Step {
Long id
ServicesGroup service
String stepType
Integer stepFrom
Integer stepTo
static constraints = {
stepType(inList:['operator', 'client'])
}
static mapping = {
version false
table 'bill.steps'
service column:'service_group_id'
}
}
关系是 - 一个ServicesGroup条目可以有多个Step实例。
然而,当我在我的控制器中时,我试着
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}"
但是,当我更改Step domain class field
时ServicesGroup service
简单地
Long service
它有效。
这里发生了什么?
答案 0 :(得分:3)
以这种方式尝试:
Step.findByService(ServicesGroup.get(3))
答案 1 :(得分:1)
尝试
grails clean
grails run-app
然后再试一次。
答案 2 :(得分:1)
Step.findByService([id:3])之类的东西可能有用。出于SQL生成的目的,它只关心ID。在很多像这样的情况下你可以把假地图扔到那里而不是真实的地方,并为自己节省一些性能。
另一方面,当你这样做时,抽象会有所破坏。