2014-03-24 66 views
0

JARS used大家好,鑑別列不與工作表每個子類

我在每個子類的繼承映射表,使用鑑別列。這是父類的條目

@Entity 
@Table(name = "employee105") 
@Inheritance(strategy=InheritanceType.JOINED) 
@DiscriminatorColumn(name="emp_type" , discriminatorType= DiscriminatorType.STRING) 

和子類分錄如下:

@Entity 
@Table(name="contractemployee105") 
@DiscriminatorValue("P") 
@PrimaryKeyJoinColumn(name="ID") 

@Entity 
@Table(name="regularemployee105") 
@DiscriminatorValue("T") 
@PrimaryKeyJoinColumn(name="ID") 

我知道我的代碼是正確的和正在生成的表,但是在插入不被創建的查詢鑑別列。我使用圖像中顯示的罐子。請讓我知道這個問題。我懷疑這是JARS或hibernate版本的問題。謝謝

回答

1

這很可能是因爲您懷疑您的休眠版本有問題。錯誤HHH-6911正是這個問題,並在Hibernate 4.2.9,4.3.1中解決。如果您的hibernate版本較早,您可能需要升級。 (看看你的罐子列表,看起來確實如此)。

正如在Stefan的回答中指出的那樣,Hibernate在這種情況下不需要鑑別器,但JPA規範說它應該被允許並持續存在if指定。

1

隨着每個子類的表,你不需要一個鑑別器。 Hibernate通過在相關表中查找記錄來確定子類。

+0

感謝您的回覆斯特凡,但我正在面臨的問題,而獲取對象。 Employee emp =(Employee)session.load(Employee.class,2); PLZ告訴我如何獲得屬於其中一個子類的對象,並且我知道該ID是哪種類型的員工。 – rishi

+0

@ rishi - 你的意思是你的裝載失敗或者你不知道裝載後你有哪種類型?如果是後者,你可能只需要一個實例檢查。 –