我有Parent
个班级,还有两个Child1
和Child2
从中继承:
class Parent { }
class Child1 extends Parent {
String prop1
}
class Child2 extends Parent {
String prop2
}
现在我需要编写select all parent clases,但标准为prop1
和prop2
,即类似
DetachedCriteria crit = Parent.where {
(prop1 == 'Some value') || (prop2 == 'Some value')
}
crit.list()
我该怎么做?
答案 0 :(得分:1)
简短的回答是,除非继承子类,否则不能基于子类的属性查询类。父级没有示例中子类属性的概念,因为它们不是继承的,因此无法进行查询。最好的解决方案是单独查询每个子类,然后合并结果。
答案 1 :(得分:1)
使用sqlRestriction可以为查询添加任意条件,因此可能会有效
DetachedCriteria crit = Parent.where{
sqlRestriction 'prop1 = ? OR prop2 = ?', ['value1', 'value2]
}
唯一的缺点是单元测试不支持SqlRestriction。