問題タブ [joincolumn]
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では@JoinColumnアノテーションは必須ですか?
Hibernate では、アソシエーションを結合するための列を指定するには、 @JoinColumn アノテーションを使用します。たとえば、次のようになります。
ほとんどの場合、列の名前はスネークケースのクラス名に_id
. したがって、Hibernate から自動的に派生することを期待するのは合理的です (たとえば、Django の ORM で行われているように)。しかし、そのような動作は何らかの形で実装されていますか?
hibernate - 結合テーブルに 0...1 の関係があるのはなぜですか?
この図でこの関係が 0...1 である理由を理解できる人はいますか? 「プロファイル」を削除しようとすると、Heidi Sql は FK 違反があると言います。論理的には問題ありませんが、これがどのように機能するかを理解したいです。「プロファイル」がなければ「ウェルビーイング」はあり得ませんが、なぜこの関係があるのでしょうか。したがって、私の意見では、これは 1 --- 0...* でなければなりません
図は intelliJ で作成され、このコードを使用します。
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "profile_chronicMedication", joinColumns = {@JoinColumn(name = "id")}, inverseJoinColumns = {@JoinColumn(name = "chronic_medication_id") }) プライベート SetchronicMedications = new HashSet<>();
編集: また、IntelliJ がこのタイプの関係を認識することも可能です。結合テーブルとの関係のために何を変更する必要がありますか? これは本当に不可能ですか、少なくとも結合テーブルも表示されますか?
クラスの役割:
@ManyToOne(オプション = false)
プライベート プロフィール プロフィール。
クラスプロフィール:
@OneToMany(カスケード = CascadeType.ALL、mappedBy = "プロファイル")
プライベート セット ロール = new HashSet<>();
hibernate - @ManyToOne 再帰関係に対して Hibernate LEFTJOIN が生成されない
私は再帰的な関連付けを持つテーブルを持っています:
コンテナーは、親 (Column container_id) に関連付けることができます。コンテナはコンテナを子として持つことができます。
問題:
生成されたリクエストは次のとおりです。
私は左外部結合を期待しています:
親を持たないコンテナー (ルート ボックス CON0000007) は、Hibernate によって左結合が生成されないため、取得されません。
ID | ORIGINAL_ID| コード | タイプ | CONTAINER_ID (親)
1 | 2 | CON000000002 | パッケージ | 12
2 | 4 | CON000000004 | パッケージ | 10
4 | 6 | CON000000006 | パッケージ | 11
5 | 8 | CON000000008 | パッケージ | 10
7 | 10 | CON0000002 | ボックス | 15
8 | 11 | CON0000003 | ボックス | 15
9 | 12 | CON0000004 | ボックス | 15
12 | 15 | CON0000007 | ルートボックス | ヌル
entity-framework-6 - EF6.1.3 列を結合する (休止状態のように)
Entity Framework 6.1.3 を使用しており、N テーブルから複数の結合列を持つ 1 つのテーブルへのリレーションを追加したいと考えています。次の例は、私の問題を理解するのに役立ちます。
次の列を含むテーブル P (プロトコル テーブル):
次の列を含むテーブル A (モジュール A テーブル):
次の列を含むテーブル B (モジュール B テーブル):
この行のすべてのプロトコルを取得するために、モジュール A にナビゲーション プロパティが必要です。
(モジュールB、モジュールCも同様…)
Java/Hibernate では、複数の ElementJoinColumns (referenceColumnsNames などを使用) を使用できることを知っています。
EF6.1 でこれを処理するにはどうすればよいですか? ありがとう、マーカス。