問題タブ [many-to-many]
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.
jpa - JPA @Many-to-Many を使用して remove() が実際に DB から参照を削除しないのはなぜですか
私のアプリケーションには、非常に単純な JPA@ManyToMany
関係が設定されています。AProduct
は 1 つ以上OrderSystem
の s の一部です。それぞれOrderSystem
に多くProduct
の があります。これは典型的な多対多の関係です。
私が戦っている問題は次のとおりです。からへorderSystems.remove()
の参照を削除するために使用すると、エントリが (そのセッション内で) 削除されたように見えます。ただし、エントリはフラッシュ時に相互参照テーブルから削除されず、再ロードすると以前のs のセットが含まれています。Product
OrderSystem
Product
OrderSystem
次のコードがあります。
ここで欠けているものを誰かに教えてもらえますか?
python - DjangoでManyToManyを使用してオブジェクトを挿入する
ストーリーとカテゴリを備えたブログのようなアプリケーションがあります。
多対多フィールドを持つモデルの新しいインスタンスを保存すると、オブジェクトがまだデータベースにないために問題が発生することがわかりました。この問題は通常、フォームの送信時に現れますが、これは でうまく回避できますstory_form.save(commit=False)
。語るべき形がない状況はどうですか?私の場合、リモート送信を受け入れる API を構築したいと考えています。私は JSON が好きで、社内の他の多くのメッセージ (このサーバーからの送信メッセージを含む) は JSON であるため、次のメッセージを受信できるようにしたいと考えています。
値をインスタンスに変換するファクトリを実装します。しかし、私は工場が操作の種類にできるだけとらわれないようにしたいと考えています。そう:
INSERT は id を無視し、UPDATE は既存のインスタンスを取得して上書きすることを除いて、同様に変換する必要があります。(リモート サブミッターは、特にキャッシュするカテゴリ オブジェクトを提供するフィードをリッスンするため、id でそれらを参照できますし、参照する必要がありますが、データベースとの直接通信はありません。)
私の本当の質問は、ManyToManyManager が関与する Django モデル オブジェクトのインスタンスをインフレートするのに最も簡単で一貫性のあるものは何かということです。私の知る限り、多対多フィールドを持つオブジェクトの挿入には、最初に新しい ID を取得する必要があるという理由だけで、2 つのデータベース ヒットが必要です。しかし、私の現在の厄介な解決策は、オブジェクトをすぐに保存して非表示にすることです。これにより、関数がそれを操作して、もう少し意味のあるものとして保存できます。save
ID のないオブジェクトが一度保存され、いくつかのプロキシ フィールドが にコピーされてからcategories
、再度保存されるように、1 ステップ アップするとオーバーライドされるようです。何よりも、問題を解決してくれる堅牢なマネージャー オブジェクトが必要です。おすすめは何ですか?
c# - linq から sql への結合が存在する場合でも、子コレクションがフィルタリングされない
LINQ クエリがあります。
または、必要に応じて Lambda 構文 (私が使用しているもの) (messageTypeFieldID
パラメーターからの var 呼び出しの上に設定されています):
LINQ 結合の学習を開始したばかりで、セットアップ中の新しい正規化 (多対多) テーブルで必要な状況に近づきました。すべてのメッセージ タイプを、それぞれに関連する「MessageTypeField_MessageType」の下にあるフィールドとともに返したいと考えています。
私の「MessageTypeField_MessageTypes」テーブルは、このような非常に単純な正規化戦略のセットアップであり、MessageTypeID が「多く」あるにもかかわらず、それは一意のデータであるため、次のようになる可能性があります。
上記のコードが実行され、満足のいくクエリが返されます..(正しいINNER JOINを実行します)しかし、たとえばクイックウォッチで見ると、 1 recordmessageTypes.ToList()[0].MessageTypeField_MessageTypes
が表示されると予想されますが、 messageTypeField_MessageType レコードのスタック全体を取得しています〜17、フィルターのみで、フィルターではありません。反復ごとにメッセージ タイプ ID でフィルタリングし、1 つのレコードのみを返す必要があります。私が間違っていること、または必要なものをどのように達成できるかについてのアイデアはありますか?MessageTypeFieldID
MessageTypeID
複雑な例で申し訳ありませんが、お役に立てれば幸いです。
database - 別の多多シナリオ
私のデータベースモデルには、多対多の関係を必要とする2つの特定のテーブルがあります。テーブルはとSystems
ですUsers
。1人のユーザーが複数のシステムのメンバーになることができ、1つのシステムに複数のユーザーが含まれます。
system_id
はシステムテーブルuser_id
のPKであり、はユーザーテーブルのPKです。system_id
ユーザーテーブルでFKとしてリンクしています。2つの間のテーブルを理解できないようです。私はテーブルを形成し、そこで両方の外部キーを使用するという考えを持っていましたsystem_user
が、それがどのように機能するかわかりません。
entity-framework - すべてのデータをロードせずに Entity Framework で多対多の関係を削除する方法
すべてのデータをロードすることなく、ADO.NET Entity Framework で多対多の関係を削除する方法を知っている人はいますか? 私の場合、サブスクリプション プロパティを持つエンティティトピックがあり、単一のサブスクリプションを削除する必要があります。コードmyTopic.Subscriptions.Remove(...)は機能しますが、最初にすべてのサブスクリプションをロードする必要があります (例: myTopic.Subscriptions.Load() )。たくさんあるので、それをしたくありません(つまり、たくさんあります)。サブスクリプションの。
wpf - Silverlight/WPF多対多のチェックボックスのリストバインディング
多対多の関係を持つエンティティモデルがあります。類似性のために、その車のエンティティと機能(CDプレーヤー、ムーンルーフなど)のエンティティを想定します。
車のエンティティを編集するSilverlight/WPFフォームがあります。可能な機能のリスト(機能テーブルのすべて)をチェックボックスのリストにしたいのですが。その部分は簡単です。ただし、チェックボックスをオンにしてチェックを外すと、その機能と車の関連付けが追加/削除されるように、チェックボックスをバインドするエレガントな方法を考えています。
これは古き良きWinFormsスタイルのイベントハンドラーで簡単に実行できることは知っていますが、プレゼンテーションとロジックを分離しておくことができるように、データバインディングを使用してこれを実行する方法があるかどうかを知りたいです。
django - djangoでオブジェクトを1つの多対多の関連付けから別の関連付けに移動しますか?
質問があります。多対多の関係にある2つのモデルがあるとします(記事、出版物)。記事Aは、出版物1、2、および3にあります。それらのパブリケーションから削除して、パブリケーションXに配置したいと思います。djangoのドキュメントでは、オブジェクトの削除と追加について説明していますが、オブジェクトを削除したり追加したりするのではなく、単に「移動」するだけです。どうすればいいですか?
前もって感謝します、
J
hibernate - Hibernate-マッピングエンティティに追加のフィールドを持つ@ManyToMany
私の簡略化されたエンティティシナリオは次のとおりです。
PERSONは、特定のROLE(あくび)のCOMPANYに関連付けられています。
私の最初の考えは、PERSONとCOMPANYの間にManyToMany関係を構成することでした。ただし、明らかに、その方法でROLEテーブルにROLEのタイプを含めることはできません(別のフィールドとして2つの外部キー)。
これを行う正しい方法は、2つのOneToMany関係を使用し、ROLEをそれ自体のエンティティとして含めることです(stackoverflowですでに回答済み)。
しかし、これは私が立ち往生しているところです:私はhtmlフォームを使用して会社に人を追加し、適切な役割を選択します、これをデータベースに保存する方法またはそれ以上:Hibernateに保存するように指示する方法。人にはリストがあり、会社にもリストがあります。役割には人と会社があります。彼らは途中でどのように会いますか?だから基本的に私が求めているのは:
会社の役割を持つ個人を1つのステップで保存できるように、正確なHibernateマッピング構成はどのようになっていますか?
php - PHPとMysqlがチェックボックスフォームとの多対多の関係を更新する
多対多のテーブル構造があり、チェックボックス フォームを更新しています。
目標は、users_project テーブルを使用して users テーブルを projects テーブルに関連付けることです。このようにして、プロジェクトごとに多くのユーザーが存在し、ユーザーごとに多くのプロジェクトが存在する可能性があります。
各ユーザー編集ページのフォームは次のようになります
3 つのテーブルの例を次に示します。
ユーザー テーブル
プロジェクト テーブル
user_projects テーブル
このテーブルは、ID に基づいて上記の 2 つのテーブルを関連付けます
これらの値を追加および編集するためのチェックボックス フォームを作成しました。各ユーザー ページでは、プロジェクト テーブルにすべてのプロジェクトが表示されます。次に、user_projects テーブルにクエリを実行し、一致するリストを見つけて、チェックボックスにチェックを追加します。
しかし、これらの値をデータベースに編集するにはどうすればよいでしょうか? user テーブルで project_id と user_id の一致を求めるクエリをループせずに、ユーザーが以前にチェックしたボックスをオフにしたか空のボックスをオンにしてデータベースを更新したかどうかを知るにはどうすればよいですか?
これが、最終結果で達成したいことの大まかな概念です。
プロジェクト テーブル内のすべてのプロジェクトに対して少なくとも 1 回はデータベースにクエリを実行する必要があるため、これはまったく良い考えとは思えません。私が一般的な問題であると想像するものには、より良い解決策があるに違いありません。私はこれについて間違った方法で考えていることを知っています。
注:配列をシリアル化してユーザー列に貼り付けることだけを考えましたが、プロジェクトをユーザーのみユーザーに関連付けてプロジェクトに関連付けることができず、目的を無効にすることができないため、これは受け入れられません。
これをJavaScriptの策略なしで実装したいと思います。
sql - 多対多の関係: 連想テーブルまたは区切り値を列で使用しますか?
2009.04.24 更新
私の質問の主なポイントは、開発者の混乱とそれについて何をすべきかということではありません。
ポイントは、区切られた値が適切なソリューションである場合を理解することです。
商用製品データベースで使用される区切りデータを見てきました (Ektron 笑)。
SQL Server には XML データ型もあるため、区切りフィールドと同じ目的で使用できます。
/終了更新
私が設計しているアプリケーションには、多対多の関係があります。以前は、データベースでこれらを表すために連想テーブルをよく使用していました。これは、開発者にいくらかの混乱を引き起こしました。
DB 構造の例を次に示します。
Document と Category の間には多対多の関係があります。
この実装では、Document.CategoryIDs はパイプで区切られた CategoryID の大きなリストです。
私にとっては、クエリで部分文字列の一致を使用する必要があるため、これは悪いことです。これはインデックスを使用できません。これは遅く、スケーリングしないと思います。
そのモデルで、カテゴリのすべてのドキュメントを取得するには、次のようなものが必要になります。
私の解決策は、次のように連想テーブルを作成することです。
これは開発者を混乱させます。私が見逃しているエレガントな代替ソリューションはありますか?
Document には何千行もあると思います。カテゴリは 40 行程度です。主な関心事はクエリのパフォーマンスです。私はこれを過剰に設計していますか?
データを連想テーブルにプッシュするよりも、ID のリストをデータベース列に格納する方が好ましい場合はありますか?
また、ドキュメント間に多対多の関係を作成する必要がある場合があることも考慮してください。これは、関連テーブル Document_Document を示唆しています。それが望ましい設計ですか、それとも関連するドキュメント ID を 1 つの列に格納する方がよいでしょうか?
ありがとう。