問題タブ [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.
java - Hibernate でのテーブル値のマッピングによる並べ替え
テーブルがマッピング テーブルを介して自己参照する @ManyToMany マッピングがあり、実際のマッピング テーブルの注文 ID で注文したいのですが、これを構成するのが難しいと感じています。
hibernate xml で実行できるため、JPA アノテーションにサポートがあると想定するのが自然です。マッピングテーブルの値を注文する方法を知っている人はいますか?
表は次のとおりです。
自己参照するマッピング テーブルは次のとおりです。
Hibernate Annotations には次のものがあります。
これは、hibernate xml で実行した方法です。
したがって、@OrderBy タグを使用したいのですが、マッピング テーブルで inorder 値を参照できません。何か案は?ありがとう。
(コードで children コレクションに対して @OrderBy(intorder) を試しましたが、うまくいきませんでした)
django - Django Admin で FK / MTM フィールドの自己 (再帰) 選択を防ぐ方法
「self」への外部キーを持つ ForeignKeyField (FKF) または ManyToManyField (MTMF) フィールドを持つモデルが与えられた場合、Django 管理者 (管理者) 内で自己(再帰) 選択を防ぐにはどうすればよいですか。
つまり、admin でモデル インスタンスの自己 (再帰的) 選択を防ぐことができるはずです。これは、新しいインスタンスを作成するのではなく、モデルの既存のインスタンスを編集するときに適用されます。
たとえば、ニュース アプリの記事の次のモデルを取り上げます。
3 つArticle
のインスタンス (タイトル: a1-3) がある場合Article
、管理者を介して既存のインスタンスを編集すると、related_articles
フィールドはデフォルトで、すべての記事のリストを提供する html (複数) 選択ボックスによって表されます ( Article.objects.all()
)。Article
ユーザーは、それ自体以外のインスタンスのみを表示し、選択できるようにする必要があります。たとえば、 Article
a1 を編集するときrelated_articles
に、a2、a3 を選択できます。
現在、これを行う方法には 3 つの可能性があると考えています。
- の管理フォーム フィールドで利用可能な選択肢を提供するクエリセットを設定する方法を提供します(たとえば、ユーザーが表示および選択できる related_articles のリストから編集中の現在のインスタンスを除外する
related_articles
など、除外クエリ フィルターを介して) 。使用するクエリセットは、 customArticle.objects.filter(~Q(id__iexact=self.id))
のコンストラクタ ( ) 内で発生する可能性があり、または何らかの動的オプションを介して発生する可能性があります. これには、フィルタリングに使用するために編集中のインスタンスを取得する方法が必要になります.__init__
Article ModelForm
limit_choices_to Model
- またはクラスの
save_model
関数をオーバーライドして、インスタンスを保存する前にそれ自体をチェックしてから削除します。これは、管理者ユーザーが編集中のインスタンスを含むすべての記事を表示および選択できることを意味します (既存の記事の場合)。Article Model
ModelAdmin
related_articles
- テンプレートなど、管理者以外で使用する必要がある場合は、自己参照を除外します。
理想的な解決策 (1) は、編集中のインスタンスのフィルターされたクエリセット変数をモデル フォーム コンストラクターに渡すことができるため、現在、管理者の外部のカスタム モデル フォームを介して実行できます。質問は、Article
同じことを行うためにフォームが作成される前に管理者が編集しているインスタンス、つまり 'self' を取得できるかということです。
これについて間違った方法で行っている可能性がありますが、FKF / MTMF を同じモデルに定義することが許可されている場合は、管理者に正しいことをさせ、ユーザーが自分自身を選択できないようにする方法があるはずです。利用可能な選択肢のリストから除外します。
注:解決策 2 と 3 は現在実行可能であり、これらを回答として取得しないようにするために提供されています。理想的には、解決策 1 への回答を得たいと考えています。
django - Djangoで多対多のカテゴリツリーのルーツを見つける
私は次のようなDjangoモデルを持っています:
各カテゴリが多くの親に存在する可能性がある場合。一部のカテゴリには親がなく、「ルート」カテゴリです。プレーンSQLでは、次の方法でそれらを見つけることができます。
そして確かに、これはうまく機能します。Django-yの呼び出しで「親のないカテゴリのリスト」を見つけるにはどうすればよいですか?私は試した:
しかし、前述のように、どちらも機能しません。
sql - SQL 多対多クエリの問題
ビデオ、videos_categories、およびカテゴリの 3 つのテーブルがあります。
テーブルは次のようになります。
私のアプリでは、ユーザーがカテゴリを複数選択できるようにしています。その場合、選択したすべてのカテゴリに含まれるすべての動画を返す必要があります。
私はこれで終わった:
しかし、複数選択に追加するカテゴリごとに、内部選択に結合を追加する必要があります。
これは本当に間違った方法だと感じずにはいられませんが、適切な方法を見つけようとしてブロックされています。
grails - gorm/grails アプリで多対多が持続しない
私のgrails 1.1アプリにはおおよそ次のものがあります
正しいテーブル (app、app_category、app_categories) が作成され、列はすべて問題ないように見えますが、関連付けテーブルにレコードがなく、エラーも発生しません。app_category テーブルと app テーブルが正しく設定されています。
関連付けテーブルのドメイン オブジェクトを手動で管理する必要がありますか? それとも、完全に明らかな何かが欠けているだけですか?
hibernate - 複合キーを使用しない Hibernate の ManyToMany
私はレガシーデータベースを扱っています。そして、 pojos & hibernate & HSQLDBを使用して単体テストを書いています。そして、次のエラーが表示されます。
私がPost
とTag
エンティティ (そしてもちろんそれらのテーブルposts
とtags
) を持っているとしましょう。Post
また、 と の間で多対多を定義する別のテーブルがTag
呼び出されpost_tags
ます。
列などのpost_tags
関係に関する追加情報が含まれているためです。これを処理するために呼び出される別のエンティティを作成しました。active
deleted
PostTag
ここで私の問題を説明するために、疑似クラスがあります:
エラーを生成するステートメントを見ると、Hibernate が を使用して複合キーを作成しようとしているように見えPRIMARY KEY (post_id, tag_id)
ますpost_id
identity
。
誰でも私の問題を解決するのを手伝ってもらえますか?
アップデート:
私は従来のデータベースを扱っているため、これは問題を示すための単なる例です。しかし、例に従って実際のステートメントを翻訳しようとします(PS:それはそうALTER TABLE
ではありませんCREATE TABLE
):
python - 子クラスの名前を知らなくても、djangoのオブジェクトの子クラスにアクセスするにはどうすればよいですか?
Django では、親クラスとそれを継承する複数の子クラスがある場合、通常は parentclass.childclass1_set または parentclass.childclass2_set を介して子にアクセスしますが、必要な特定の子クラスの名前がわからない場合はどうすればよいでしょうか?
子クラス名を知らなくても、親から子への関連オブジェクトを取得する方法はありますか?
python - 一般的な多対多の関係
メッセージの送信者と受信者が一般的なエンティティになるメッセージング システムを作成しようとしています。これは、参照するオブジェクト (GenericForeignKey) しかない送信者にとっては問題ないようですが、受信者 (GenericManyToManyKey ??) に対してこれを行う方法がわかりません。
以下は簡単な例です。PersonClient と CompanyClient は Client から属性を継承しますが、固有の詳細があります。最後の行はこだわりポイントです。メッセージ受信者が CompanyClients と PersonClients のセットになることをどのように許可しますか?
vb.net - 多対多の関係のエンティティをどのように挿入しますか?(エンティティフレームワーク)
ユーザーとロールの間に多対多の関係があり、ユーザーエンティティのインスタンスと複数のロールIDがある場合、他のロールデータがなく、選択を行わずに、2つのタイプのエンティティ間に関係を挿入できます。最初の役割?
アップデート:
私は十分に明確ではなかったかもしれません。ロールのインスタンスはありません。ロールIDのみがあります。最初にデータベースからRoleオブジェクトを入力せずに、UserとRoleの関係を作成することは可能ですか?