設定によりどちらのモデ複合キー
-
26-09-2019 - |
質問
いテーブルdefnitionされています。:
ライセンス
ClientId
Type
Total
Used
ClientIdタイプと一意に識別す。僕のマッピングとしてファイルに説明致します。
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true">
<class name="Acumen.AAM.Domain.Model.License, Acumen.AAM.Domain" lazy="false" table="License">
<id name="ClientId" access="field" column="ClientID" />
<property name="Total" access="field" column="Total"/>
<property name="Used" access="field" column="Used"/>
<property name="Type" access="field" column="Type"/>
</class>
</hibernate-mapping>
場合にクライアントを使用ライセンスを実行することを可能にし、更新する必要があるのに使用欄を表に示す。として設定しますClientIdカラムとしてはidカラムのためにこのテーブルのマッピングに、xmlを取得していますTooManyRowsAffectedException.
きください方法について教えてくださいセット複合キーのマッピングレベルの設定によりどちらのモきudpateに基づくClientIdます。
のようなもの:更新ライセンス設定用=利用1ClientId='xxx'タイプ=1
を参考にしてください。
おかげさ Mahesh
解決
は、あなたのマッピングがEquals
とGetHashCode
を上書きすることを反映して、あなたのクラスのニーズ必要があります。
ClientId
があなたのClient
エンティティの主キーである場合も、あなたは、many-to-many
としてそれをマッピングしなければならないだけでなく、同上ます。
また、なぜあなたはlazy="false"
を指定していますか?あなたは意味合いを知っていますか?
また、なぜaccess="field"
ですべてをマッピングしますか?プロパティは、いくつかの特別なロジックを持っていますか?
これは私が書いたすべてを考慮改訂マッピングです。適用されないそれらの部分を無視して自由に感じる: - )
<class name="Acumen.AAM.Domain.Model.License, Acumen.AAM.Domain" table="License">
<composite-id>
<key-many-to-one name="Client" column="ClientID" />
<key-property name="Type" />
</composite-id>
<property name="Total" />
<property name="Used" />
</class>
他のヒント
あなたは複合-IDを使用する必要があります。
http://nhibernate.info/doc/nh /en/index.html#mapping-declaration-compositeidする
その他の仲間は、上記の使用複合-idではないが可能です。
一方で、できるだけです インタセプタを更新 ていることを保証しType=1年以上と言われている。
このリンクが多いので、もう明らかです。
- 優雅なコード:実施インタセプタの設定によりどちらのモ
- 設定によりどちらのモドキュメンテーションインタセプタ
- サンプル設定によりどちらのモIInterceptor実施
- 企業といえる。ネコミュニティ:設定によりどちらのモPart2 (スクロールを下さい: インタセプタは、永続的なライフサイクル)
- 設定によりどちらのモインタセプタの監査に挿入されたオブジェクトId (問)
のインタセプタを使用上の複合キーな休憩のおDBRMともより柔軟なソリューション、"汚染"おファイルマッピングをより正確に表現。