【问题标题】:grails: Passing a grails domain class as a function argumentgrails:将 grails 域类作为函数参数传递
【发布时间】:2012-07-27 15:15:23
【问题描述】:

我有两个(实际上是 5 个)域类,ClassA 和 ClassB,并且必须在两者上执行相同的查询

ClassA.where { a == b }.list()

ClassB.where { a == b }.list()

我想编写一个服务类来通过 Class 对象执行这些查询,而不是为每个类创建一个服务。我试过this solution

def clazz = grailsApplication.getDomainClass(domainClass)
clazz.where { a == b }.list()

但我有一个异常告诉我 DefaultGrailsDomainClass 没有 'where' 方法。

还有其他方法可以做到这一点吗?类似“ClassA.grailsClass.where {}”

谢谢

【问题讨论】:

    标签: grails grails-domain-class


    【解决方案1】:

    getDomainClass 的返回值为GrailsDomainClass / DefaultGrailsDomainClass。调用它的getClazz 方法来获取它封装的类:

    def clazz = grailsApplication.getDomainClass(domainClass).clazz
    clazz.where { a == b }.list()
    

    【讨论】:

    • 我正在尝试对 findAll() where 查询做同样的事情,但它总是返回所有域对象。查询是这样的:clazz.findAll { prop == value } 不知道这是不是 Grails 2.1.1 的 bug?
    猜你喜欢
    • 2011-08-30
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多