問題タブ [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.
data-modeling - 双方向の ManyToOne 関係を作成する
こんにちは、ManyToOne 関係を作成しようとしましたが、行き詰まりました。
請求書と予約クラスがあります
現実は次のとおりです。請求書には多くの予約を含めることができます。(1:m) Bill クラスは、1 つの Bill にのみ属する Booking の関係を管理する必要があります。(1:1 予約は請求書なしでは存在できません)
請求書を削除すると、請求書に属するすべての予約が削除されます。請求書から予約を削除する場合、この予約のみを削除する必要があります。予約を削除する場合、この予約は請求書から削除する必要があります。
これまでのところ、私はこのモデルを持っています:
請求クラス
予約クラス
を削除するとBill
、すべての予約も削除された に属しBill
ます。しかし、サイドBooking
からでもサイドからでも、単一の を削除することはできません。Bill
Booking
何が恋しいですか?
hibernate - Hibernate の 1 対多 (または 1 対多) 関連付けを db テーブルにマッピングする際に関係テーブルを避ける
私は休止状態が初めてです。Hibernate では、Java クラスをデータベース テーブルにマッピングするときにリレーション テーブルが必要になることが多く、リレーション テーブルが必要ない場合もあります (1 対多のリレーションやその逆の場合など)。
例えば:
私は Company クラスと Flight クラスであり、会社は多くのフライト (Company から Flight への 1 対多の関連付け) を持つことができます。
休止状態の注釈を使用した次のコードがあります。
クラスがデータベースに正常にマップされました。また、次の 3 つのテーブルがあります。
- COMPANY(ID フィールド)
- FLIGHT (ID フィールドと COMP_ID フィールド)
- COMPANY_MANY_TO_ONE_FLIGHT (2 つのフィールド: MANY_TO_ONE_COMPANY_id と flight_id )
ただし、最後のテーブル COMPANY_MANY_TO_ONE_FLIGHT は、hibernate によって追加されたリレーション テーブルであり、冗長です。
明らかに、FLIGHT テーブルには外部キー COMP_ID があり、冗長なリレーション テーブルを削除することは合理的です。
そして、どうすればそのような状況を避けることができますか? 同様に、注釈を変更します。
mysql - 親テーブルの問題の前に、多対1の子を解決します
私のプログラムでは、個人から始めてマネージャーの下にグループ化し、次にそれらのマネージャーを上級マネージャーの下にグループ化する組織図を作成する必要があります...データベースに関してこれを行うにはどうすればよいですか?これは多対1の関係であり、違法で不可能だと思っていました。これは、親のマネージャーを作成する前に、子のテーブル(個人)から始めるようなものです。誰かが私のデータベースを設計するための正しい方向に私を向けるのを手伝ってくれるなら、私は本当に感謝しています!!
----編集----これが私の問題のより詳細な説明です:
私のプログラムのユーザーが、自分が取り組む予定のプロジェクトで使用したい35人の個人を入力することから始めたとしましょう。現在、作成して従業員/他の(下級)マネージャーを割り当てることができるいくつかの可能な管理職があります。ユーザーは特定の位置を作成する必要はありませんが、好きなように選択して割り当てることができます。唯一の制約は、常にトップマネージャーがいることです-彼を大統領と呼びましょう-そして彼は与えられたマネージャー(大統領を含む)に5-10人だけを割り当てるべきです(しかしそうする必要はありません)。したがって、この例では、35人の個人と1人の社長から始めています。次に、35人の個人をチームにグループ化し、そのうちの1人をマネージャーとして割り当てます。ユーザーが6人のチームを2つ、9人のチームを2つにすることにしたとします。そして5人の1つのチーム-これらの各グループには、そのチームのマネージャーとして割り当てられた個々のメンバーの1人がいます。これで、5つのチームがあり、それぞれが独自のマネージャーの下にあり、それらの5つのマネージャーが社長に割り当てられます。プログラムはこれを手放しますが、最後のチームのマネージャーの下にいる個人の数は5人未満(わずか4人)であることをユーザーに警告します。そのため、ユーザーは(またはいつでも)戻って組織を変更できます。それで、彼がこの問題を修正してチームを変更したいとしましょう。そこで彼は、9人の2つのチームのうちの1つを分割し、1人の人が不足していたチームに1人の個人を割り当てます。これにより、最終的に6人のチーム(5人の個人メンバーと1人のマネージャー)、9人のチーム(8indと1mngr)、8人のチーム(7indと1mngr)がカウントされ、5人のチームマネージャー全員が割り当てられます。大統領に。
実生活でのみ、これはさらに分解される可能性があります-より多くのレベルの管理を備えた巣。これどうやってするの?
以下のJoeHopfgartnerの回答はまだ有効ですか?後で(行が最初に作成された後に)役割が割り当てられる場合でも、「役割」列を作成できますか?またはいつでも変更しましたか?この自己参照外部キーをnullにすることはできますか?(マネージャーがまだ割り当てられていない場合のように)または、チームに割り当てられた後、個人を別の「チーム」テーブルに移動し、マネージャーを「マネージャー」テーブルに移動する必要があります。マネージャーとして割り当てられた後、マネージャーテーブルを参照するチームテーブルの外部キーを追加しますか?
また、MySQLを使用しているので、自己参照のONUPDATECASCADEまたはONUPDATESET NULL操作を使用できないという事実は私の特定のケースに影響しますか(ユーザーは間違いなく割り当てを変更することが多いため)?
これを手伝ってくれてありがとう!!!
nhibernate - 多対1およびwhere句
私は非常に複雑なレガシーデータベースに取り組んでいます。
テーブルcustomersはサプライヤと共有され、この構造を作成した人はフラグを使用して顧客を識別しました。顧客として定義されたレコードの操作にのみ関心があるため、マッピングにwhere句を追加しました。
ご覧のとおり、この句を使用してすべての顧客を事前にフィルタリングしました。顧客ANFCLI = 'Y'
にクエリを実行すると、すべてが完全に正常に機能します(where句が使用されます)。
しかし、注文テーブルをクエリすると、多対1の関連付けがあります。
エンティティ顧客のフィルターは失われます。
where句が関連付けで機能せず、コレクション(bag、setなど)でwhere句を使用する必要があることをどこかで読んでいましたが、多対1でそれを行うにはどうすればよいですか?
助けてくれてありがとう。
php - PHP - 複数の文字列を単一の文字列にマップする方法は? 例: 'en','english','eng' --> 'eng'
文字列の多対 1 の key->value マッピングが必要です。
これまでの私の唯一のアイデアは、このような一連のテストを行うことですが、それほどエレガントではありません。
より良い解決策は何ですか?
java - JPA-OneToMany、ManyToOne、OneToOneの問題
次の2つのエンティティがあるとします。
データベースに2つのテーブルが欲しいのですが。1つは親用、もう1つは子供用です。ただし、Hibernateは3つのテーブルを作成します。1つは親用、1つは子用、もう1つはそれらを結合するためです(2つのフィールドを持つテーブル)。
@OneToOne
Childクラスにparent属性を設定しても、同じ結果が得られます。
私は何が欠けていますか?
hibernate - Hibernateで多対1の遅延読み込みをプログラムで指定する
Spring3.0.5でHibernate3.6を使用しています。
Userオブジェクトに対して次のマッピングがあります
ユーザーは組織と多対1の関係にあります。通常、私はその関係を熱心にロードしたいので、マッピングはデフォルト設定のlazy = false(何も指定しないことによる)のままです。
組織を熱心にロードしたくない場合があります。基準でこれを指定してみました
ただし、フェッチモードは無視されます。Hibernateは依然として組織の関係を熱心にロードします。私はこれに対して頭を数時間ノックしてきました。どんな助けでもいただければ幸いです。
jpa - JPAで@ManyToOne属性を@EmbeddedIdとして含む複合主キーを作成するにはどうすればよいですか?
私は自分の質問をして答えていますが、私が最良の答えを持っているとは思いません。より良いものがあれば、投稿してください!
関連する質問:
- JPAで@EmbeddedIdからの後方参照を設定する方法
- Embeddedid(?)のHibernateマッピング
- @EmbeddedIdを使用したJPA複合キー
単純な集約関係にあるクラスのペアがあります。一方のインスタンスは、もう一方のインスタンスをいくつか所有しています。所有するクラスには、それ自体のある種の主キーがあり、所有するクラスには、対応する外部キーを介してこのクラスに対して多対1があります。所有するクラスに、その外部キーといくつかの追加情報で構成される主キーを持たせたいです。
議論のために、それらの長年のお気に入りであるOrderとOrderLineを使用しましょう。
SQLは次のようになります。
これをJPAを使用してJavaにマッピングしたいと思います。順序は簡単で、OrderLineは@IdClassで処理できます。これがそのためのコードです-コードはかなり慣習的です、そしてあなたが私の特異性を許してくれることを願っています。
ただし、@ IdClassを使用するには、OrderLineのフィールドを複製するIDクラスを作成する必要があります。その重複を避けたいので、代わりに@EmbeddedIdを使用したいと思います。
ただし、これを行うための素朴な試みは失敗します。
OpenJPAは、@EmbeddedIdとしての使用を拒否します。私は他のプロバイダーを試したことがありませんが、JPA仕様では、IDクラスを構成するフィールドが関係ではなく基本である必要があるため、それらが成功することは期待できません。
それで、なにかお手伝いできますか?キーに@ManyToOne関係が含まれているが、@ EmbeddedIdとして処理されるクラスを作成するにはどうすればよいですか?
java - JPA:一方向の多対1およびカスケード削除
次のような一方向 @ManyToOne
の関係があるとします。
親Pと子C1 ... C nがPを参照している場合、JPAには、Pが削除されたときに子C 1 ... C nを自動的に削除するクリーンできれいな方法がありますか(つまりentityManager.remove(P)
)?
私が探しているのは、ON DELETE CASCADE
SQLと同様の機能です。
many-to-many - CRM 4.0 ビジネス ユニット エンティティ、N:1/N:N 関係を作成できない
題して、
CRM 4.0 で N:1 (businessunit : custom_entity) の関係を作成しようとしています。
UIにNew Many-to-One Relationship
ボタン オプションが表示されない
他のエンティティに対しては N:1 の関係を作成できましたが、businessunit
これは CRM 4.0 のよく知られた制限ですか?
または、システムで何かが誤って構成されていますか?