我有3个实体从另一个实体继承。 我使用的策略Single_Table休眠忽略FetchType的单继承
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
E.g. B类,C和D遗传自A
在实体B上我急切地加载了另一个实体X.不幸的是,休眠忽略我的注释,并创建一个选择每个实体B获取实体X.
@ManyToOne(fetch=FetchType.EAGER)
private Projekt projekt;
我的select语句如下所示:从A A'
一些更多的代码示例 'select一个:
@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,它确实inherite所有类。不幸的是,它也为每个结果行执行select语句来查询我想避免的“projekt”。
你的SELECT语句无效的JPQL。你确定它不是“从A a中选择一个”吗?如果Hibernate为每个B生成一个选择来获取X,那么它不会忽略注释:X会被急切地取出。 – 2011-12-20 11:13:59
谢谢,我改变了这个例子。我试图让它尽可能简单。 – Daniel 2011-12-20 11:33:02