問題タブ [hibernate-onetomany]

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 投票する
3 に答える
2976 参照

java - Hibernate マッピング - @Id なしでテーブルを接続する

Member、およびの 3 つのテーブルがAddressありMem_Addrます。 エンティティはテーブルによってマップ/接続されMemberます。多対多。AddressMem_Addr

と の次のエンティティがMemberありAddressます。

Mem_Addrテーブル (エンティティが関連付けられていません)。

Address実在物。

Addressテーブル/エンティティに ID がありません。(デザインについては聞かないでください。今は変更できません。)

そのため、メンバーをロードするときに、そのメンバーのすべての住所の場所をロードしたいと考えています。

解決策は何ですか?

編集:詳細...

基本的に、一部Memberの はテーブルに新しいエントリを持ちMem_Addrます。テーブルの各エントリに対して、Mem_addrテーブルにエントリがありAddressます。

メンバーのアドレスを取得するには、Mem_Addr を参照する必要があります。Mem_Addr はaddr_idプライマリとして、Address はaddr_id外部キーとして持ちます。

0 投票する
2 に答える
8177 参照

java - Hibernate @OneToMany で子を正しく削除するには?

親オブジェクトから CascadeType.ALL を持つ子のリストへの非常に単純な単方向 @OneToMany があります。子の 1 つを正しく削除するにはどうすればよいですか?

もちろん、リストで remove(child) を呼び出してから session.saveOrUpdate(parent) を呼び出すだけでは機能せず、孤立した削除を指定しない限り、データベースで子は削除されません。

孤立した削除の代わりに、session.delete(child) で DB から削除してから、リストから remove(child) してから、session.refresh(parent) を実行する必要があるので、親オブジェクトメモリ内に正しい状態がありますか?

子を正しく削除し、孤児を削除せずにデータベースで削除するにはどうすればよいですか?

私は現在、私のParentDaoでこれについて考えています:

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

java - Hibernate: 継承による NaturalId

次のエンティティがあります (短いバージョン):

GroupOfStudents:

センチュリア:

コホート:

したがって、GroupOfStudents を含む CourseLecture があります。Centuria や Cohort など、さまざまな GroupOfStudents があります。しかし、コホートの数値フィールドを NaturalId にしたいと考えています。これにより、エラーが発生します。

しかし、ルート エンティティでのみ @NaturalId を使用できるのはなぜですか? クラスの継承を壊さずにこの問題を解決するにはどうすればよいですか?

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

hibernate - HibernateでmappedByを使用する場合の子エンティティの永続化

私のDBスキーマには2つのテーブルがあります:-Rule TableRule Scopeテーブル。
ルール テーブルの列 (rule_id主キー、.....) およびルール スコープの列 (rule_id外部キー、Scope_id(自動生成された ID ではなく、異なる rule_id に対して繰り返すことができます) )
ルール スコープの主キーは、rule_idとの組み合わせですScope_id

私のRULEエンティティ

Rule Scope実在物:-

次の質問があります:-
Rule を保存しようとしているのに、子エンティティが永続化されていない場合。外部キー制約に違反しているルール スコープを永続化すると、ルール ID に 0 が与えられます。しかし、 @JoinColumn を使用すると機能します。を永続化して使用しRule Scopeながら永続化するのを手伝ってください。RulemappedBy

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

java - ASK HIBERNATE: エラー: MappedBy が不明なターゲット エンティティ プロパティを参照しています

これは私のSQLです

これは私の2つのエンティティです

メイン関数で、私が書くとき

エクリプス 言う

なぜこのエラーが発生するのですか?

0 投票する
0 に答える
2504 参照

java - ポリモーフィズムとジェネリックを使用した @JoinFormula を使用した @OneToMany

次のユースケースがあります。

  • 親には、子と親タグが含まれます。
  • 子には、ChildrenTags とその親ノードが含まれます。
  • ParentTags と ChildrenTags はどちらも、T が親または子であるタグです。

ここで、この親またはその子の 1 つに関連するすべてのタグをマップする Parent に派生フィールドが必要です。SQL クエリは簡単ですが、特定のプロパティに注釈を付けて機能させることはできません。@ManyToOne マッピングは、タグの親所有者を見つけるために魅力的に機能することに注意してください。以下のコードを参照してください (これは @OneToMany 関係です。タグは、この例で見つけることができる最良の名前ではない可能性があります)。

親クラス

Child.class

タグクラス

ChildTag.class

ParentTag.class

特定のクエリまたは式で allTags をロードする方法を見つけたいと思います。逆マッピング @ManyToOne は機能します (所有者が監査されない限り、そのバグを見つけるのは困難でした)。

私はすでに成功せずに次の解決策を試しました:

@結合式

ClassCastException が発生しました。式を列にキャストできません

@ローダ

例外ではありません。実際にデバッグすると、ローダーが適切なタグをすべて見つけますが、それらでコレクションを初期化しないことがわかります。@Loader と @NamedNativeQuery がうまくいかないことがわかったので、クエリを hbm 構成ファイルに入れようとしましたが、成功しませんでした (ここで何か間違ったことをした可能性があります)。ただし、構成ファイルなしでソリューションを実装したいと思います。

別の列 (owner_id) を追加することもできますが、モデルを変更せずにその問題を解決する方法を見つけることができれば、その方がよいでしょう。

ジェネリックが関係しているかどうかはわかりません。さらに、私のエンティティは監査され、索引付けされています。

どんな助けでも大歓迎です!

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

hibernate - Hibernate Mapping : hibernate での 1 対多の双方向マッピングで子を削除します

親オブジェクトとその詳細オブジェクトがあります。マッピングは以下のコードで言及されています -

親オブジェクトのマッピング

子オブジェクトのマッピング

私は、たとえば 3 人の子供を持つ新しい親を救うことができます。さて、更新操作では、

parent.childSet では、すべての値を削除して新しい値を設定しています。私が session.update(parent) を行うとき、私の要件は、

  1. 親の既存のすべての子を削除します-parent.childSetにはそれらがありません。
  2. parent.childSet で使用可能な新しい値を挿入します。

ここで、parent.childSet は、親クラス/HBM マッピングのセットを意味します。

今起こっている問題は、

  1. 例外をスローしています-「("CHILD"."PARENT_ID") に NULL を挿入できません」

質問が明確でない場合は、質問を更新し続けます。

御時間ありがとうございます!