問題タブ [many-to-one]
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.
nhibernate - nhibernate マッピングは、挿入されたサブクラスのキーを保存/挿入しません
マッピングを少し変更した後 ( 理由については、cascade-delete に関する他の質問を参照してください)、完全に新しいオブジェクトとそのすべてのサブクラスを挿入しようとしました。
この別の問題が発生した後、データベースへのキーの挿入に関する問題が発生しました。状況は次のとおりです。
どちらもコレクションである 2 層のサブクラスを持つオブジェクトがあります。
オブジェクトを親と呼びましょう。これには子のコレクションがあり、このコレクション内のすべてのエンティティには独自のエンティティのコレクションがあります。次のようにマッピングされます。
親のマッピング<set>
CollectionObject のマッピング
2 番目のコレクション内のオブジェクトのマッピング マッピングは、上記と同様です。想定されるシナリオは、親を保存すると、サブクラス/コレクションの保存がトリガーされるというものです。
たとえば、ID = 1 の親があり、親には 1 つのコレクションがあり、このコレクションには独自のコレクションが 1 つあります。
親を保存すると、親はデータベースから ID を取得します (ネイティブ SQL ID)。これで、最初のコレクションの ParentID プロパティに、Parent がデータベースから取得したばかりの ID が入力されます。また、コレクションのコレクションは、親が ID を取得したのと同じ方法で、子がデータベースから取得した ID で満たされた ChildID を取得する必要があります。
今起こっていることは(NHProfで作成されたSQLをチェックしました)すべてが独自のIDで挿入されますが、コレクションは親クラスのIDで満たされたキー列を取得しません。(代わりに、0 が挿入されるだけです)
要するに、私の質問は、マッピングに何を追加するのを忘れたのかということです。キー列は、私がすべきだと思うことをしませんか?
ここに何か追加するのを忘れた場合は、そう言ってください。喜んで追加情報を提供します。
アップデート
<many-to-one>
問題は、子供にタグがないことに関係しているのではないかと思います。そこで、そのうちの 1 つを最初の子マッピングに追加しようとしました。私はこれを思いついた
ただし、このセットアップでは次のエラーが発生します。
Exception occurred getter of Parent.ParentID
InnerException あり
{"Object does not match target type."}
悲しいことに、このエラーでは、続行する場所についてのアイデアが得られません。
hibernate - hibernate foreign key mapping many-to-one
I have been working on it for quite a while, but still can't figure out what's wrong with my code. Each Service has multiple profiles, but each profile only has one Service.
in Profile.hbm.xml. I add
Is it the correct way to map it?
nhibernate - NHibernate: 双方向の多対一の問題
私はNHibernateで双方向の関係を持っています:
inverse="true" を設定せずに保存し、子に親プロパティを設定するにはどうすればよいですか?
POCOの観点からはあまり意味がないので、私はこれをしたくありません.
または、NHibernate プロキシ コレクション (子) で呼び出された Add をインターセプトすることは可能ですか?
その場合、Parent 設定ロジックをここに配置します。
hibernate - キー フィールドで Max() プロジェクションを使用し、外部主キーでグループ化する Hibernate 基準クエリ
このクエリ (データベースで直接動作する) を Hibernate (バージョン 3.2.5) の条件クエリとして表現するのが困難です。
これまでのところ、これは私が思いついたものであり、機能せず、could not resolve property: datetime of: common.entity.FtpStatus
エラーメッセージがスローされます:
以下は、Netbeans 6.8 がデータベースから直接生成した関連参照構成です。
FtpStatus.hbm.xml -
Connections.hbm.xml -
私は何かが欠けていることを知っていますが、休止状態でのグーグルはまだそれを明らかにしていません. s.createSQLQuery()
あるいは、 orを直接使用する SQL クエリs.createQuery()
も受け入れられますが、それを書くことに成功したことはさらに少ないです.....
jpa - JPA @OneToMany と複合 PK
私はJPAプロジェクトに取り組んでいます。3 つの主キーを持つクラスで @OneToMany マッピングを使用する必要があります。この後、エラーとクラスを見つけることができます。
これが私のクラスのソースコードです:
アクション :
許可 :
パーミッションPK:
java - SQLで使用されていないJoinColumn名
データベースに正確な外部キー制約を設定せずに、多対1の関係をマッピングすることに問題があります。MySqlデータベースでOpenJPA実装を使用していますが、問題は、挿入ステートメントと選択ステートメント用に生成されたSQLスクリプトにあります。
RootId列を含むLegalEntityテーブルがあります(とりわけ)。また、null許容ではないLegalEntityId列があり、LegalEntityの「RootId」列を参照する値が含まれているはずのAddressテーブルがありますが、データベース制約(外部キー)は設定されていません。
アドレスエンティティがマップされます:
SELECTステートメント(LegalEntityのアドレスをフェッチする場合)とINSERTステートメントが生成されます。
上記のステートメントからテーブル属性を省略すると、次のように生成されます。
したがって、LegalEntityIdはどのステートメントにも含まれていません。
そのような参照に基づいて関係を持つことは可能ですか(データベースに外部キーがない場合、主キー以外の列へ)?他に何か足りないものはありますか?
前もって感謝します。
nhibernate - 1.0.2.0 から 2.1.2 への Nhibernate の移行と、多対 1 の保存の問題
nhibernate を使用した古い大きな asp.net アプリケーションがあり、その一部を拡張およびアップグレードしています。使用されていた NHibernate はかなり古い (1.0.2.0) ため、新しい機能のために (2.1.2) にアップグレードすることにしました。HBM ファイルは、MyGeneration を使用してカスタム テンプレートを介して生成されます。1つのことを除いて、すべてが非常にスムーズに進みました。
Blog と Post をオブジェクトにする必要があるとしましょう。ブログには多数の投稿を含めることができるため、Post は多対 1 の関係になります。このアプリケーションの動作方法により、リレーションシップは主キーではなく、Blog.Reference 列を介して行われます。
サンプル マッピングと .cs ファイル:
そしてクラスファイル
ここで、ID が 1D270C7B-090D-47E2-8CC5-A3D145838D9C で参照 1 のブログがあるとします。
古いnhibernateでは、そのようなことが可能でした:
しかし、新しいバージョンでは、Post.BlogId に NULL を挿入できないという例外が発生します。私が理解しているように、古いバージョンでは、nhibernate の場合、Blog.Reference フィールドがあれば十分であり、そのフィールドでエンティティを取得して PostEntity にアタッチすることができ、PostEntity を保存すると、すべてが正しく機能しました。そして、私が理解しているように、新しい NHibernate は Blog.Id によってのみ取得しようとします。
これを解決するには?オブジェクトは制御できないため、DB の設計を変更したり、BlogEntity に ID を割り当てたりすることはできません (これらのオブジェクトは、外部ソースからこのような一般的な「オブジェクト」として事前に入力されています)。
nhibernate - NHibernate、データベースに列が存在する場合、エンティティをロードできませんでした
これはおそらく答えるのが簡単な質問ですが、私はそれを理解できません。
「City」に多対1の複合IDを持つ「Address」に多対1の「Company」クラスがあります。「会社」をロードすると「住所」がロードされますが、「住所」のプロパティを呼び出すと、エラーが発生します。
内部例外は次のとおりです。
私が理解していないのは、SQL Server 2005 でクエリを実行でき、それが機能するということです。さらに、これらの列は両方ともアドレス テーブルに存在します。
ここに私のHBMがあります:
会社を呼び出す私のコードは次のとおりです。
そして最後に、ここでエラーが発生します:
「user」は上記のコードですでに初期化されています。
ありがとう。
java - Hibernate は多対 1 で注釈を付け、親コレクションに子を追加しません
次の注釈付き Hibernate エンティティ クラスがあります。
ここでの私の意図は、Cat と Kitten の間の双方向の 1 対多/多対 1 の関係であり、Kitten が「所有側」になります。
私がやりたいことは、新しい Cat を作成し、続いてその Cat を参照する新しい Kitten を作成したときに、私の Cat の子猫のセットに新しい Kitten が含まれている必要があることです。ただし、これは次のテストでは発生しません。
Cat を再クエリした後でも、Set はまだ空です。
ここで Hibernate に期待しすぎていますか? それとも、コレクションを自分で管理するのは自分の負担ですか? (注釈)ドキュメントには、親オブジェクトに便利なaddTo*
/メソッドを作成する必要があることは示されていません。removeFrom*
この関係でHibernateに期待することについて誰か教えてもらえますか? または、他に何もない場合は、ここで何が起こると予想すべきかを教えてくれる正しい Hibernate ドキュメントを教えてください。
親コレクションに子エンティティが自動的に含まれるようにするにはどうすればよいですか?
indexing - 休止状態の検索で多対 1 の関係をインデックス化する最良の方法は何ですか?
多対 1 マッピングのエンティティがあります。(製品 1-* 地域、一方向の関連付け)
そのような関係のインデックスを格納する最良の方法は何ですか?
そのため、検索クエリのフィルタリングに簡単に使用できます。