【发布时间】:2022-01-18 09:24:25
【问题描述】:
我使用的是单表继承,一个父实体:
@Entity
@Table(name = "parent")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type")
public class Parent {
// ...
}
和两个子实体:
@Entity
@DiscriminatorValue("child1")
public class Child1 extends Parent {
@Column(name = "child1_property")
private Integer child1Property;
// ...
}
@Entity
@DiscriminatorValue("child2")
public class Child2 extends Parent {
@Column(name = "child2_property")
private Integer child2Property;
// ...
}
现在,如果我直接从 Child1 实体查询 (HQL):
from Child1
它将生成一个 SQL,该 SQL 仅选择来自 Parent 实体和 Child1 实体的列。如果我使用 where type='child1' 从 Parent 实体中选择
from Parent p where type(p)='child1'
它将仅返回 Child1 实体,但 SQL 查询从 Parent、Child1 和 Child2 中选择所有列。是否有可能从 Parent 实体查询使用鉴别器列(即仅限于 Child1 实体)并获取特定的 SQL 查询,即仅选择来自 Parent 和 Child1 的列。
【问题讨论】:
-
也许您可以显示您的 HQL 查询?
-
更新了问题
-
为什么不能直接使用
from Child1?
标签: java hibernate inheritance discriminator