2016-08-19 121 views
0

EclipseLink user guide指出,當爲複合主鍵構造IdClass(不嵌入)時,它必須具有公共無參數構造函數並實現方法equalshashCode。另外,它給出的例子也實現了getter和setter。EclipseLink中的IdClass的要求是什麼?

Persistence WikiBook有參數,無無參數的構造函數,沒有getter和setter的公共構造函數,並且明確指出的EclipseLink不需要執行equalshashCode

其中哪些是真的需要?我可以使用最小的IdClass只有屬性,沒有構造函數和方法,因爲EclipseLink會爲我生成這些?這是否依賴於EclipseLink的版本?

回答

1

只需要無參數構造函數(除非另有一個定義,否則由java生成)。您只能使用屬性最小的類。

但是,EclipseLink在這種情況下不會生成任何東西(即使編織),這意味着您可能會遇到意外的散列或基於等號的操作問題。

+0

那麼這是否意味着如果沒有指定'hashCode'和'equals',主鍵的相等性默認爲對象標識?因此,實際上包含這些方法在EclipseLink中仍然是必需的? – oulenz

+1

基本上,是的。我建議總是指定'hashCode/equals'方法,但即使沒有它,在簡單用例(如'select * from ...'等)中它也能正常工作。 –

相關問題