Hibernate上の同じエンティティの遅延読み込みオブジェクトを比較する最適な方法は何ですか?Hibernateで同じエンティティの遅延読み込みオブジェクトを比較するには?
//instanceC and instanceD are different objects of different classes
instanceC.getA().equals(instanceD.getA()) // false
instanceC.getA().getId() == insttanceD.getA().getId() // false!
それでは、私は最後に行うことは次のとおりです。
int idA=instanceC.getA().getId();
int idB=instanceD.getA().getId();
a==b // true
そして、それは当然のひどく曲がって見えます。だから私は最後にequals()
メソッドをオーバーライドしてこの混乱を隠すことに決めました。
優れた(または適切な)ソリューションがありますか?
注:スタックオーバーフローに関する質問Lazy-loaded NHibernate properties in Equals and GetHashCodeなどを確認しました。私は回避策を求めていません。私は、存在する場合には、より良い解決策または正確な解決策を提示するために、この質問をしたい。
通常の文字列比較を使用してください:なぜなら、 'instanceA.getId()。equals(instanceB.getId()) '? – DRCB
カスタムオーバーロードされた等価関数を作成する必要があります。あなたが提供したリファレンスによく似ています。 –
@ DRCB複合キーが使用される場合、文字列比較は機能しません。 –