我有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