每个子类的Grails表继承和鉴别器
我在grails应用程序中使用域继承 tablePerHierarchy false 所以我得到了一个带有公共属性的大表,对于每个子类,表中只包含特定的列。 所以让我们假设关系如下每个子类的Grails表继承和鉴别器,grails,inheritance,gorm,hibernate-criteria,Grails,Inheritance,Gorm,Hibernate Criteria,我在grails应用程序中使用域继承 tablePerHierarchy false 所以我得到了一个带有公共属性的大表,对于每个子类,表中只包含特定的列。 所以让我们假设关系如下 A -> B A -> C A -> D -> E A -> F -> G 其中A是父类。现在我需要找到所有的B,D,E,并需要有页面结果。我试图编写条件查询,但由于没有鉴别器支持。有人能帮我吗 我试着使用下面的查询条件,发现了一件奇怪的事情 A.createCriteria()
A -> B
A -> C
A -> D -> E
A -> F -> G
其中A是父类。现在我需要找到所有的B,D,E,并需要有页面结果。我试图编写条件查询,但由于没有鉴别器支持。有人能帮我吗
我试着使用下面的查询条件,发现了一件奇怪的事情
A.createCriteria().list(max:max,offset:offset) {
eq("isDeleted", false)
inList('class', [1,3])
}
这对我来说很有效,但有一件奇怪的事。我如何识别哪个类引用值1作为鉴别器,哪个类引用值2?
我在Grails2.4.2上为什么你用
[1,3]
而不是['A','C']
?应该可以正常工作,但它会引发类强制转换异常。无法将字符串强制转换为整数。甚至我也记录了sql查询。它在sql查询中将类字段作为计算字段,如果联接表中存在数据,则分配编号。如果此\u 2 \u.id不为空,则为2如果此\u 4 \u.id不为空,则为4如果此\u 6 \u.id不为空,则为6如果此\u 1 \u.id不为空,则为1如果此\u 3 \u.id不为空,则为3如果此\u 5 \u.id不为空,则为5如果此\u 4.id不为空,则为4如果此\u 6 \u 6 \u 1 \u.id不为空,则为0结束为clazz\u 2\u
我明白了。尝试在('A','B')中使用sqlRestriction'类。
。在这种情况下,不会生成任何case
子句,但我使用的是每个子类的表,其中不存在任何类字段,只有通过联接才能确定该行表示的类:(你为什么用[1,3]
而不是['A','C']
?应该可以正常工作。它确实会引发类强制转换异常。无法将字符串强制转换为整数。即使我已经记录了sql查询。它在sql查询中也会将类字段作为计算字段,如果数据存在于联接表中,则会分配数字。如果此\u 2 \u.id不为null,则为2,如果此\u 4 \u.id不为null,则为4,如果此\u 6 \u.id为null,则为4不为null则当此\u 1 \u.id不为null时为6,当此\u 3 \u.id不为null时为1,当此\u 5 \u.id不为null时为3,当此\u.id不为null时为5,当此\u.id不为null时为0,则0结束为clazz\u 2 \u
我明白了。尝试在('A',B'中使用sqlRestriction'类“
。在这种情况下,不会生成case
子句,但我使用的是每个子类的表,其中没有类字段,仅通过联接存在。它会标识该行表示的类:(