1

OK、これはこれのフォローアップの質問です。私は今本当に混乱しているので.

エンティティ間に 1 対多または多対多の関連付けがPersonあり、JavaEventのクラスに. ( Event に単一またはが含まれているかどうかは無視しましょう。)PersonSet<Event>PersonSet<Person>

Events はデータベースに格納されたエンティティであるため、イベント フィールドを変更できます。Event可変性を処理し、Java Set<> ID チェックを混乱させない正しい方法は何ですか? この場合、hashCode()および/またはオーバーライドすることは決してありませんか? equals()(例: ID = オブジェクト参照 ID に基づく)

を順序付けたい場合Event(イベントの開始時間など)、フィールドの変更をどのように管理すればよいEventですか? 変更がそこに反映されると、データベースは問題なく処理しますが、Java 側では、コレクション内のイベントを変更するには、それを削除して変更し、再挿入する必要があるということですか? それとも、Hibernate マッピングの Java 側でソートされた順序を維持する実際の方法はありませんか? (したがって、順序付けされていないものとして処理する必要があるため、並べ替えられたEvents のリストを取得するときはいつでも Java で並べ替えを処理する必要がありますか?)

編集:うーん、equals/hashCode に関するこれらの議論を見つけました:

4

1 に答える 1

0

それはまったく落とし穴ではありません、それはあなたがそれを期待するように言ったセマンティクスを強制しています。本当の問題は「私のいわゆるキーフィールドが変わると平等はどうなるか」です。はい、それは窓の外に出ます。したがって、はい、誰かがセット内のフィールドを変更し、それらのキーに基づいて別のフィールドと同じになる状況になる可能性があります。はい、ビジネスロジックはそれを処理する必要があります。イベントオブジェクトを更新するときは、フィールドだけでなく、それらを配置するコンテキストに対しても、新しい値が有効であることを確認する必要があります。この場合、更新されるイベントオブジェクトを複製することはできません。既存のイベント。この問題はSQLではさらに醜いです。

于 2009-07-02T22:44:02.867 に答える