GORM通过继承类的字段分离查询

时间:2014-01-06 16:33:27

标签: grails gorm grails-domain-class

我有Parent个班级,还有两个Child1Child2从中继承:

class Parent { }
class Child1 extends Parent {
    String prop1
}
class Child2 extends Parent {
    String prop2
}

现在我需要编写select all parent clases,但标准为prop1prop2,即类似

DetachedCriteria crit = Parent.where {
    (prop1 == 'Some value') || (prop2 == 'Some value')
}
crit.list()

我该怎么做?

2 个答案:

答案 0 :(得分:1)

简短的回答是,除非继承子类,否则不能基于子类的属性查询类。父级没有示例中子类属性的概念,因为它们不是继承的,因此无法进行查询。最好的解决方案是单独查询每个子类,然后合并结果。

答案 1 :(得分:1)

使用sqlRestriction可以为查询添加任意条件,因此可能会有效

DetachedCriteria crit = Parent.where{
    sqlRestriction 'prop1 = ? OR prop2 = ?', ['value1', 'value2]
}

唯一的缺点是单元测试不支持SqlRestriction。