問題タブ [hbm]
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.
c# - NHibernate.Mapping.Attributes でディスクリミネーターを使用してサブクラスごとにテーブルを実行する
サブクラスごとにテーブルを実行しようとしています: NHibernate.Mapping.Attributes を使用してディスクリミネーターを使用します。hbm は次のようになります。
コードは次のようになります。
結果は次のようになります。
正しいテーブル構造 (2 つの 10 進数フィールドと 1 つの PF/FK to Reports テーブルを含む 1 つのテーブル) を作成しますが、データを挿入するときに失敗します。これは、各フィールドに対して 2 つの挿入が生成されるためです。
NHibernate.Mapping.Attributes を使用してこれを行う方法はありますか?
java - hbm ファイルから Hibernate 複合キー オブジェクトを生成する
(括弧内の暴言:) 私は Hibernate の初心者で、SQL で 15 秒で記述できる単純な結合のオーバーヘッドに少し不満を感じています。(暴言終了)
したがって、状況は次のとおりです。同じ複合主キーを含む 2 つのテーブルがあります。両方のテーブルの列を「ID」と「バージョン」と呼びましょう。両方のテーブルから特定の ID/バージョンに関するデータが必要なので、
悪いテーブルのデザインですが、私の手にはありません。
Hibernate では、私のオンライン調査では、テーブルで共有される別の複合キー クラスを作成し、A オブジェクトに B オブジェクトを含め、A の hbm ファイルでそれらの間を 1 対 1 でマッピングすることを提案しています。
私のプロジェクトでは、すべての Hibernate データ オブジェクトが hbm ファイルで生成され、同じ場所に配置されています。したがって、hbm ファイルを使用してこの複合キー オブジェクトを作成し、その兄弟と共に保存できるかどうかを知りたいです。問題は、特定のテーブルにマップされないことです (または、2 つのテーブルにマップされると言えます)。この複合キー クラスを hbm ファイルで作成できるかどうか、また作成することが望ましいかどうかを判断しようとしています。私はこれについて間違った方法で進んでいますか?
前もって感謝します。
nhibernate - 流暢なマッピングでs#arparchitectureを使用してhbmxmlファイルをエクスポートする方法
この質問は以前に尋ねられましたが、答えはすべて、fluentnhibernateからhbmファイルをエクスポートする方法を示しています。流暢に包むS#arpArchitectureを使用しています。スキーマをエクスポートすることはできますが、本当に必要なのは、エラーのトラブルシューティングを行うためのxmlファイルです。以前にFNHを使用してこれを行ったことがありますが、ミックスにS#arpを追加すると、理解できない複雑なことが起こります。
この質問はいくつかのフォーラムで尋ねられましたが、マッピングファイルの取得方法を示す質問が見つかりません。
.net - S#arp アーキテクチャの自動マッピングを HBM ファイルでオーバーライドするには?
S#arp アーキテクチャの複合キーの問題に直面しています。それを行う方法または自動マッピングでマッピングファイルを使用する方法の例はありますか?
nhibernate - NHibernate hbm.xml ファイルを視覚化する方法
NHibernation hbm.xml ファイルの内容を視覚化するためのツールや巧妙な方法はありますか?
hbm ファイルをデザイナにロードし、それらをリレーションを持つエンティティとして表示したいと考えています
.net - NHibernate の起動が遅い、HBM の条件付き読み込み、および「関連付けがマップされていないクラスを参照している」
バックグラウンド
同じモデルで実行されているいくつかのプロジェクト/アプリケーションがあります。それらはすべて独自の一意のエンティティ/テーブルを持っていますが、1 つの特定の共通エンティティ/テーブルも共有しています。つまり、アプリケーション A が必要とするエンティティは、共通テーブルを除いて、アプリケーション B が必要とすることはありません。逆もまた同様です。これで、共通テーブルには、アプリケーション A のテーブルだけでなく、アプリケーション B のテーブルとも関係があります。大量の HBM をロードすると処理が遅くなるため、現在実行中のアプリケーションに必要な HBM のみをロードするシステムを実装しました。
問題
アプリケーション A で、共通テーブル/エンティティにアクセスすると、次のようになります。
次の例外が発生します
NHibernate.MappingException: 関連付けがマップされていないクラスを参照しています: (アプリケーション B のエンティティ)
私は、共通エンティティからのリレーションシップを介してアプリケーション B のテーブルに明示的にアクセスしようとした場合にのみ NHibernate が壊れることを望んでいました。結果として、アプリケーション A からはアクセスしないため、壊れることはありません。
質問
アクセスされるまでリレーションシップ マッピングの検証を遅らせるように NHibernate を構成する方法はありますか?
遅延読み込みを使用します。
nhibernate - lazy=false が HBM で定義されている場合、setFetchMode(Lazy) を使用して Nhibernate ICriteria クエリを実行する方法は?
怠惰な多対 1 の関連付けを使用して条件クエリを実行したいと考えています。これらの関連付けはlazy="false"
、HBM のように設定されます。プロジェクトの 90% で熱心に使用しているからです。
ただし、として実行する必要がある「大きな」クエリがいくつかありますlazy="proxy"
。
HBM:
基準の設定:
反対の方法で機能しますが、この方法ではありません。熱心にとってきます。
LOC は 20K+ であり、逆の方法で行うには大規模なリファクタリングが必要です。
これを、必要なときにのみ遅延フェッチし、それ以外の場合は熱心にフェッチするにはどうすればよいですか?
前もって感謝します!
nhibernate - 共通の列を持つテーブルの nhibernate マッピング ファイルを再利用できますか
すべてが同じ列 (ID、コード、説明など) を共有するルックアップ テーブルがたくさんありますが、同僚から、一般的な lookup.hbm.xml マッピング ファイルを作成して、それをベースとして使用できるかどうか尋ねられました。他のすべてのルックアップ テーブル。nhibernate のサポートにはファイルが含まれていますか、または XML の共通のチャンクを参照する他の方法はありますか? Fluent がマッピング クラスで継承をサポートしていることは理解していますが、残念ながらマッピング テクノロジを切り替えることはできません。
nhibernate - NHibernate プロパティ マッピング、型属性のベスト プラクティス?
hbm ファイルのプロパティのマッピングについては、少し疑問があります。
時々、私は自分のデータベースの文字列フィールドを次のようにマッピングしました:
しかし、同じマッピングを次のように書くことができます:
私の質問は...より良い方法は何ですか?
プロパティタグの「type」属性を省略しても機能しますが、禁忌があるかどうかはわかりません。教えて頂けますか?
そして最後に...これは協会ですか?
db varchar フィールド -> タイプ「AnsiString」
db nvarchar フィールド -> タイプ「文字列」
hibernate - 従来のデータベース構造 Hibernate マッピングの問題
次のデータベース構造のマッピングに問題があります (簡潔にするために、PK/FK といくつかの余分な列だけで短縮されています:
ポリシー
Policy_Id (PK) ...
危険
Risk_Id (PK) ...
パーティ
Party_Id (PK) ...
パーティーの役割
- PartyRole_Id (PK)
- Party_Id (FK not-null)
- Policy_Id (外部キー)
- Risk_Id (外部キー)
- Party_Role_Type
したがって、PartyRole テーブルには、パーティをポリシーにリンクする行や、同じパーティをリスクにリンクする行を含めることができます。基本的に、これは多対多の結合テーブルですが、多対多の関係 (Party<->Policy と Party<->Risk の 1 つ) の両方を組み合わせています。Party_Role_Type は POLICY または PARTY のいずれかであり、行が属する関係を識別するための識別子として効果的に機能します。
この構造を、ポリシー、パーティ、リスク、パーティロールの 4 つのエンティティでモデル化しようとしました。マッピングは次のとおりです。 コード:
すべての Java pojo はこのマッピングに一致するように設定され、オブジェクトがコレクションで追加または削除されると、すべての関連付けが正しく設定されます。ポリシーは集約ルートと見なされるため、Hibernate によって保存されるときに、ポリシーに関連付けられたパーティを保存したいと考えています。ポリシーとリスク (および関連するすべての役割) に関係者を追加すると、次の例外が発生します。
原因: java.sql.BatchUpdateException: 整合性制約違反: 外部キーに親がありません。FK_PARTY_ROLE_POLICY テーブル: PARTY_ROLE
なにが問題ですか?また、これはこの関係をマッピングする最良の方法ですか? 中間エンティティを使用せずに、この関係を何らかの形でマッピングする機会はありますか? 助けてくれてありがとう。