EclipseLink user guideには、コンポジット主キーのIdClass(埋め込みではない)を構築するときに、パブリック引数なしコンストラクタがあり、メソッドequals
とhashCode
を実装する必要があると記載されています。さらに、getterとsetterも実装しています。EclipseLinkのIdClassの要件は何ですか?
Persistence WikiBookは、引数なし引数なしのコンストラクタ、無getterとsetterを持つパブリックコンストラクタを持っている、と明示のEclipseLinkはequals
とhashCode
の実装を必要としないと述べています。
どれが本当に必要ですか? EclipseLinkがこれらを生成するため、属性だけでコンストラクタとメソッドを持たない最小限のIdClassを使用できますか?これはEclipseLinkのバージョンに依存していますか?
これは、 'hashCode'と' equals'を指定しなければ、プライマリキーの等価性はデフォルトでobject identiyですか?したがって、実際にはこれらのメソッドを含むことはまだEclipseLinkでは必要ですか? – oulenz
基本的にはyesです。そして、私は常に 'hashCode/equals'メソッドを指定することをお勧めしますが、単純なユースケース(' select * from ... 'など)では正しく機能しません –