問題タブ [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.

0 投票する
1 に答える
332 参照

eclipselink - EclipseLink の IdClass の要件は何ですか?

EclipseLink ユーザー ガイドには、複合主キーのIdClass (埋め込まれていない) を構築する場合、引数のない public コンストラクターが必要であり、メソッドequalsおよびを実装する必要があると記載されていますhashCode。さらに、この例ではゲッターとセッターも実装しています。

Persistence WikiBookには、引数を持つ public コンストラクターがあり、引数のないコンストラクターはなく、getter と setter もありません。また、EclipseLink が および の実装を必要としないことを明示的に述べていequalsますhashCode

これらのうち、本当に必要なものはどれですか? EclipseLink がこれらを生成してくれるので、属性だけでコンストラクターもメソッドも持たない最小限の IdClass を使用できますか? これはEclipseLinkのバージョンに依存していますか?

0 投票する
1 に答える
3604 参照

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不変データでオーバーライドしますか?