我有 3 个实体继承自另一个实体。我正在使用 Single_Table 策略
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
例如,B、C 和 D 类继承自 A
在实体 B 上,我正在热切地加载另一个实体 X。不幸的是,Hibernate 忽略了我的注释并为每个实体 B 创建一个选择以获取实体 X。
@ManyToOne(fetch=FetchType.EAGER)
private Projekt projekt;
我的选择语句如下所示:'select a from A a'
更多代码示例:
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "DType", discriminatorType = DiscriminatorType.STRING, length = 3)
public abstract class A {}
@Entity
@DiscriminatorValue(B.PREFIX)
public class B extends A {
@ManyToOne(fetch=FetchType.EAGER)
private Projekt projekt;
}
现在我希望 Hibernate 查询从 A 继承的所有类,它确实如此。不幸的是,它还为每个结果行执行一个 select 语句来查询“projekt”,这是我想避免的。