2011-10-16 36 views
0

其實問題在標題中。如何在實體的equals方法中使用@DiscriminatorColumn?

實體將被映射爲系統中的不同對象(博客節點,註釋等)註釋 所以我希望能夠使用此列(讀取它的值,以便爲特定類型的評論對象類型構建評論樹。 此外,我想在equalshashcode方法添加@DiscriminatorColumn
什麼是做到這一點的最好方法是什麼?

回答

0

此問題之際,只要您加載實體鑑別值總是空。所以,如果你嘗試添加鑑別值的等於你可能會得到空指針,所以這樣做有兩種方法: -

  1. 一個是每當你使用鑑別器,你有某些子類,那麼在子類的基礎上,你可以等同於兩個對象。
  2. 您可以在實體中添加一種臨時變量,然後在映射時您可以將insert="false" update="false"添加到該屬性上,這將使您的屬性爲只讀,然後爲該屬性添加等於。

如: -

private String tempDiscriminatorValue; 
<property name="tempDiscriminatorValue" type="string" column="DISCR_VAL" insert="false" update="false"/> 
+0

感謝性反應,但我認爲,它會更容易手動添加類型字段,而不是使用繼承。看來我的情況並不是使用繼承的最佳方式。 – Pilgrim

0

DiscriminatorColumns被繼承,A類的一個實例是含蓄不等於B類,所以我不明白你爲什麼要這麼做?

equals()方法通常會做,

if (object instanceof Foo) { 
    return ... 
} else { 
    return false; 
} 
+0

我需要檢查邏輯equivelence(評論類型BlogComment和文本X等於註釋類型BlogComment和文本X) – Pilgrim

相關問題