0

EclipseLink user guideには、コンポジット主キーのIdClass(埋め込みではない)を構築するときに、パブリック引数なしコンストラクタがあり、メソッドequalshashCodeを実装する必要があると記載されています。さらに、getterとsetterも実装しています。EclipseLinkのIdClassの要件は何ですか?

Persistence WikiBookは、引数なし引数なしのコンストラクタ、無getterとsetterを持つパブリックコンストラクタを持っている、と明示のEclipseLinkはequalshashCodeの実装を必要としないと述べています。

どれが本当に必要ですか? EclipseLinkがこれらを生成するため、属性だけでコンストラクタとメソッドを持たない最小限のIdClassを使用できますか?これはEclipseLinkのバージョンに依存していますか?

答えて

1

引数なしのコンストラクタのみが必要です(これは、別のものが定義されていない限りjavaによって生成されます)。属性を持つ最小限のクラスを使用できます。

ただし、この場合、EclipseLinkでは何も生成されません(織りでも)。つまり、ハッシュまたは等価ベースの操作で予期しない問題が発生する可能性があります。

+0

これは、 'hashCode'と' equals'を指定しなければ、プライマリキーの等価性はデフォルトでobject identiyですか?したがって、実際にはこれらのメソッドを含むことはまだEclipseLinkでは必要ですか? – oulenz

+1

基本的にはyesです。そして、私は常に 'hashCode/equals'メソッドを指定することをお勧めしますが、単純なユースケース(' select * from ... 'など)では正しく機能しません –

関連する問題