問題タブ [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.
java - Hibernate マッピング - @Id なしでテーブルを接続する
Member
、およびの 3 つのテーブルがAddress
ありMem_Addr
ます。
エンティティはテーブルによってマップ/接続されMember
ます。多対多。Address
Mem_Addr
と の次のエンティティがMember
ありAddress
ます。
Mem_Addr
テーブル (エンティティが関連付けられていません)。
Address
実在物。
Address
テーブル/エンティティに ID がありません。(デザインについては聞かないでください。今は変更できません。)
そのため、メンバーをロードするときに、そのメンバーのすべての住所の場所をロードしたいと考えています。
解決策は何ですか?
編集:詳細...
基本的に、一部Member
の はテーブルに新しいエントリを持ちMem_Addr
ます。テーブルの各エントリに対して、Mem_addr
テーブルにエントリがありAddress
ます。
メンバーのアドレスを取得するには、Mem_Addr を参照する必要があります。Mem_Addr はaddr_id
プライマリとして、Address はaddr_id
外部キーとして持ちます。
java - Hibernate @OneToMany で子を正しく削除するには?
親オブジェクトから CascadeType.ALL を持つ子のリストへの非常に単純な単方向 @OneToMany があります。子の 1 つを正しく削除するにはどうすればよいですか?
もちろん、リストで remove(child) を呼び出してから session.saveOrUpdate(parent) を呼び出すだけでは機能せず、孤立した削除を指定しない限り、データベースで子は削除されません。
孤立した削除の代わりに、session.delete(child) で DB から削除してから、リストから remove(child) してから、session.refresh(parent) を実行する必要があるので、親オブジェクトメモリ内に正しい状態がありますか?
子を正しく削除し、孤児を削除せずにデータベースで削除するにはどうすればよいですか?
私は現在、私のParentDaoでこれについて考えています:
java - Hibernate: 継承による NaturalId
次のエンティティがあります (短いバージョン):
GroupOfStudents:
センチュリア:
コホート:
したがって、GroupOfStudents を含む CourseLecture があります。Centuria や Cohort など、さまざまな GroupOfStudents があります。しかし、コホートの数値フィールドを NaturalId にしたいと考えています。これにより、エラーが発生します。
しかし、ルート エンティティでのみ @NaturalId を使用できるのはなぜですか? クラスの継承を壊さずにこの問題を解決するにはどうすればよいですか?
hibernate - HibernateでmappedByを使用する場合の子エンティティの永続化
私のDBスキーマには2つのテーブルがあります:-Rule Table
とRule Scope
テーブル。
ルール テーブルの列 (rule_id
主キー、.....) およびルール スコープの列 (rule_id
外部キー、Scope_id
(自動生成された ID ではなく、異なる rule_id に対して繰り返すことができます) )
ルール スコープの主キーは、rule_id
との組み合わせですScope_id
。
私のRULE
エンティティ
Rule Scope
実在物:-
次の質問があります:-
Rule を保存しようとしているのに、子エンティティが永続化されていない場合。外部キー制約に違反しているルール スコープを永続化すると、ルール ID に 0 が与えられます。しかし、 @JoinColumn を使用すると機能します。を永続化して使用しRule Scope
ながら永続化するのを手伝ってください。Rule
mappedBy
java - ASK HIBERNATE: エラー: MappedBy が不明なターゲット エンティティ プロパティを参照しています
これは私のSQLです
これは私の2つのエンティティです
メイン関数で、私が書くとき
エクリプス 言う
なぜこのエラーが発生するのですか?
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) を追加することもできますが、モデルを変更せずにその問題を解決する方法を見つけることができれば、その方がよいでしょう。
ジェネリックが関係しているかどうかはわかりません。さらに、私のエンティティは監査され、索引付けされています。
どんな助けでも大歓迎です!
hibernate - Hibernate Mapping : hibernate での 1 対多の双方向マッピングで子を削除します
親オブジェクトとその詳細オブジェクトがあります。マッピングは以下のコードで言及されています -
親オブジェクトのマッピング
子オブジェクトのマッピング
私は、たとえば 3 人の子供を持つ新しい親を救うことができます。さて、更新操作では、
parent.childSet では、すべての値を削除して新しい値を設定しています。私が session.update(parent) を行うとき、私の要件は、
- 親の既存のすべての子を削除します-parent.childSetにはそれらがありません。
- parent.childSet で使用可能な新しい値を挿入します。
ここで、parent.childSet は、親クラス/HBM マッピングのセットを意味します。
今起こっている問題は、
- 例外をスローしています-「("CHILD"."PARENT_ID") に NULL を挿入できません」
質問が明確でない場合は、質問を更新し続けます。
御時間ありがとうございます!