Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每个子类的Grails表继承和鉴别器_Grails_Inheritance_Gorm_Hibernate Criteria - Fatal编程技术网

每个子类的Grails表继承和鉴别器

每个子类的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()

我在grails应用程序中使用域继承

tablePerHierarchy false

所以我得到了一个带有公共属性的大表,对于每个子类,表中只包含特定的列。 所以让我们假设关系如下

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
子句,但我使用的是每个子类的表,其中没有类字段,仅通过联接存在。它会标识该行表示的类:(