2012-08-22 28 views
0

在@Inheritance型加入鑑別列無法訪問

我有類人,員工和學生

我有鑑別列人共有列,和getter setter方法,如果我不得不從人級的訪問

@Inheritance(策略= InheritanceType.JOINED) @DiscriminatorColumn(NAME = 「PERSON_TYPE」,discriminatorType = DiscriminatorType.STRING) 公共類Person

@Column(name =「RELATIONSHIP_TYPE」,insertable = false,nullable = false,updatable = false) private String relationType;

// getter和setter

@DiscriminatorValue( 「學生」) @PrimaryKeyJoinColumn(NAME = 「PERSON_ID」) 公共類學生

@DiscriminatorValue( 「僱員」) @PrimaryKeyJoinColumn(名=「PERSON_ID」) 公共類員工

所以當我節省了員工或學生記錄,然後檢索人員記錄,這是給我鑑別列值NULL 但自動對焦ter重新啓動服務器其給我的價值相應

如果我手動設置鑑別器列值的值,然後保存並檢索然後它給我的價值(我需要手動設置鑑別器列值?) 然後什麼是使用鑑別列

我爲什麼不應該使用與員工和學生有列類型,並通過枚舉我可以進入的角度值插入列 ,我也將適用懶獲取對

列人一對多關係的好處

請建議

先謝謝 Ramandeep辛格

回答

0

我有相同的用例,但它有點不同。我有一個枚舉PersonType和一個在每個擴展類中被覆蓋的抽象屬性。 Hibernate使用鑑別器來決定創建哪個類,並且類決定哪個是鑑別器值,既作爲映射又作爲屬性。

pubilc abstract PersonType getType();