【发布时间】:2011-12-02 17:28:09
【问题描述】:
我写了一个 list() 方法,用于检索与一组过滤器匹配的域类实例列表,该方法用于不同的域类;除了调用 GORM 方法的类之外,代码完全相同:
Store => Store.createCriteria()
客户端 => Client.createCriteria()
等等。
为了避免代码重复,我尝试通过创建一个泛型类来制作列表方法的泛型版本:
class QueryUtils<T> {
def list(params) {
T.createCriteria()
[...]
}
}
这样,我的每个服务(StoreService、ClientService 等)都可以扩展 QueryUtils :
class StoreService extends QueryUtils<Store>
class ClientService extends QueryUtils<ClientService>
以此类推,并继承其域类类型对应的list()方法。
问题是在执行过程中,它不起作用,因为 T 的有效类型是 java.lang.Object,而不是我指定的域类类型:
groovy.lang.MissingMethodException:没有方法签名:静态 java.lang.Object.createCriteria() 适用于参数类型:() 值:[]
你知道如何解决这个问题吗?
【问题讨论】:
标签: grails groovy grails-orm