2

Playアプリケーションに-annotatedクラスがあり、データベースに保存する前に一意性を確保するためにこれを詰め込んでい@Entityます。オブジェクトはまだ保存されていないため、キー値はありません。したがって、比較はそれらのプロパティに基づいている必要があります。ModelSet

equals()の実装を覗いてみましたJPABaseが、まだキーがない場合は、すべてのエンティティオブジェクトが明示的に等しくないようです。

だから、私の質問:

  1. サブクラスに実装equals()hashCode()ても大丈夫ですか?Model
  2. もしそうなら、そうするための最良の/正しい方法は何ですか?に電話super.equals()する必要があり、その結果にどのように対処する必要がありますか?
4

1 に答える 1

1

equalsまたはhashCodeアプリケーションモデルクラスで実装することはお勧めしません。一意性は最終的にデータベースによって保証される必要があります。アプリケーションの観点からは、一意性はほとんどの場合、ユーザー名や電子メールなどの特定のフィールドに課せられます。データ エンティティの一意性が、hashCodeまたはequalsメソッドを介してオブジェクト全体で計算されるケースに遭遇したことはありません。

于 2013-01-04T01:23:15.987 に答える