1

我有这样的域类:

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 域类字段时

ServicesGroup service

简单地

Long service

有用。

这里发生了什么?

4

3 回答 3

3

试试这样:

Step.findByService(ServicesGroup.get(3))
于 2009-05-22T12:00:31.767 回答
1

尝试

grails clean
grails run-app

然后再试一次。

于 2009-05-22T10:22:35.553 回答
1

Step.findByService([id: 3]) 之类的东西可能会起作用。无论如何,出于 SQL 生成的目的,它只关心 ID。在很多这样的情况下,您可以将假地图扔到那里而不是真实的地图,并为自己节省一些性能。

另一方面,当你这样做时,抽象会有点崩溃。

于 2009-05-22T14:01:19.603 回答