問題タブ [object-equality]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
eclipselink - EclipseLink の IdClass の要件は何ですか?
EclipseLink ユーザー ガイドには、複合主キーのIdClass (埋め込まれていない) を構築する場合、引数のない public コンストラクターが必要であり、メソッドequals
およびを実装する必要があると記載されていますhashCode
。さらに、この例ではゲッターとセッターも実装しています。
Persistence WikiBookには、引数を持つ public コンストラクターがあり、引数のないコンストラクターはなく、getter と setter もありません。また、EclipseLink が および の実装を必要としないことを明示的に述べていequals
ますhashCode
。
これらのうち、本当に必要なものはどれですか? EclipseLink がこれらを生成してくれるので、属性だけでコンストラクターもメソッドも持たない最小限の IdClass を使用できますか? これはEclipseLinkのバージョンに依存していますか?
c# - Entity Framework エンティティのベスト プラクティスは、Equals と GetHashCode をオーバーライドします
one-to-many
内部に関係がある2 つのエンティティ間の同等性を確認したいと考えています。
したがって、明らかにObject.Equals
メソッドをオーバーライドしましたが、CS0659コンパイラ警告が表示されます'class' overrides Object.Equals(object o) but does not override Object.GetHashCode()
。
私は をObject.GetHashCode
オーバーライドしましたが、Resharper は、このGetHashCode
メソッドはすべてのオブジェクトのライフサイクルで同じ結果を返す必要があり、変更可能なオブジェクトで使用されると教えてくれました。(ドキュメント)
私は何を好むべきかわからない:
- をオーバーライド
Equals
せずにメソッドをオーバーライドするGetHashCode
、または GetHashCode
不変データでオーバーライドしますか?