R42日記スマートフォン用の表示で見るR42日記この日記は私的なものであり所属会社の見解とは無関係です。takahashikznITmediaに寄稿しました。Loading設定しているとき、エンティティのequalsメソッドの扱いが面倒になることが判りました。次のようなケースを考えてみます。1つの店舗(Shop)は、一人の従業員(Employee)を店長として持っているという関係です。Loading設定された状況下において、次のようなコードを書いたとします。サンプルコードその1まずはエンティティクラスの定義から。}}で、実行コードその1。...;//shop1とshop2は違うエンティティ。shop1.equals(shop2);isSameShopの値はfalseです。サンプルコード2では次のコードはどうでしょう。shop1.equals(shop1Another);このとき、isSameShopの値はfalseになります。Loadingしていない場合はtrueになります。このような現象が発生するのでしょうか。Loadingが原因なのは明らかなんですが。原因は、バイトコードエンハンスされた部分にあります。前の記事で、バイトコードエンハンスしたコードの中身がこんな感じになることをご紹介しました。instantiated}]Shopエンティティへ、_persistence_chief_vhフィールドがバイトコードエンハンスで追加されています。このとき、_persistence_chief_vhフィールドはequalsでfalseを返してしまうので、EqualsBuilder.reflectionEqualsが必ず失敗するようになるのが原因だと考えられます。この問題を解決するには、エンティティのequalsメソッドをEqualsBuilderで手抜きなんかせず、きちんと手書きすれば大丈夫です。JSONの順序について月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。