問題タブ [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.
linq-to-sql - LINQ to SQL-オブジェクトの取得、変更、SubmitChanges()は新しいオブジェクトを作成します
私はしばらくこれと戦ってきました。多対1の関連付けを実装しようとしています。テーブルには、読み取り値と呼ばれる行がたくさんあります。これらは時間の経過とともに蓄積され、時々私はそれらをエクスポートしたいと思います。それらをエクスポートするときに、ExportEventという新しいオブジェクトを作成して、エクスポートされた行を追跡し、必要に応じて再エクスポートできるようにします。したがって、Readingは、エクスポートする前にReadingsを作成するため、ExportEventとnull許容の外部キー関係にあります。
私が見つけたのは、次にエクスポートを実行するときに、最初にExportEvent(evt)を作成し、を使用して読み取り値を追加するかどうかです。
または私が使用する場合
SubmitChangesを呼び出すと、evtへの関連付けで作成された新しい読み取り値が常に取得され、元のレコードは更新されません。
ただし、これを最も単純なものに戻しましたが、関連付けなしで2つのオブジェクトを作成できるかどうかを確認するために、すべての読み取り値を取得してそれらのint値を更新したときにも、submitchangesによって多数の新しいレコードが挿入されていることがわかりました。 。どうしたの?
nhibernate - NHibernate多対1/1対1、異なるキー
ねえ、私はNHibernateでタイヤを蹴っていて、かなり複雑な関係を持つレガシーデータベースを操作して、少し頭を悩ませてきた難問を抱えています。
ClaimRootには、claimGUIDの主キーがあります。ClaimRootには、claimGUIDによって関連付けられたClaimdetailsのバッグがあります(これは扱います)。
問題は、ClaimRootがClaimFinancialsとオプションの1対1の関係を持っていることです(すべてのClaimRootsがClaimFinancialsを持っているわけではありませんが、ほとんどが持っています)。ただし、ClaimFinancialsのPKはFormIDフィールドです。このフィールドはClaimRootに存在しますが、PKではありません。
罪のない人を保護するために余分な列を削除して、以下のマッピングを投稿しました。
前もって感謝します!-ボブ
ruby-on-rails - Rails ActiveRecord 関係 - 多くの関係があり、関係に属しています
3 つのモデルを作成しました。
- 記事: 記事を含む
- タグ: タグが含まれています
- ArticleTag: 多対 1 のタグを記事の関係に関連付けるためのものです。これには、tag_id と article_id が含まれています。
私が抱えている問題は、私がアクティブ レコード テクノロジにかなり慣れていないことと、すべてを定義する適切な方法を理解していないことです。現在、私が間違っていると思うのは、
さて、ここから私の考えは、追加することでした
これに正しくアプローチしているかどうかはわかりません。助けてくれてありがとう!
python - 多対1マッピング(同値類の作成)
あるデータベースを別のデータベースに変換するプロジェクトがあります。元のデータベース列の1つは、行のカテゴリーを定義します。この列は、新しいデータベースの新しいカテゴリにマップする必要があります。
たとえば、元のカテゴリが次のとおりであると仮定します。parrot, spam, cheese_shop, Cleese, Gilliam, Palin
これは私にとって少し冗長です。そして、これらの行を次のように分類したいと思いますsketch, actor
。つまり、すべてのスケッチとすべてのアクターを2つの同値類として定義します。
それはかなり厄介です-私は次のようなものを持っていることを好みます:
しかし、もちろん、これはタプル全体をキーとして設定します。
Pythonでエレガントな多対1の辞書を作成する方法はありますか?
java - 所有者エンティティからのリンクなしでJPAで依存関係を指定するにはどうすればよいですか?
目標は、所有者が削除されたときにすべての扶養家族を削除することです。私は次のクラスを持っています:
現在の実装では、所有者が削除された後も依存関係は存在します。
所有者にはDependentへのリンクがなく、変更できないため、@Dependentアノテーションまたはcascade=DELETEを使用できません。
JPAはそのような「逆依存」をサポートしていますか?もう1つの質問は、フィールド_ownerが削除されている間、optional ="false"は何を保証するのかということです。
nhibernate - NHibernateで参照が変更されたときに、参照されたオブジェクトを削除するにはどうすればよいですか?
私はそのような2つのエンティティを持っています(関連するものだけに蒸留されています):
Person
は と多対 1 の関係にありAddress
、オブジェクト用語では、 a は をPerson
参照してAddress
おり、このリンクは単方向です (Address
には への参照はありませんPerson
)。
さて、このコードを使用すると:
最初の部分は、想定されていることを実行し、データベースに newPerson
とnew を作成Address
します。
ただし、2 番目の部分は既存の を更新しPerson
て新しい を作成しますAddress
が、孤立した最初のアドレスは削除しません。新しいエンティティへの参照を変更していることを NHibernate に認識させ、孤立したエンティティを自動的に「ガベージ コレクション」するにはどうすればよいですか? または、これを手動で行う必要がありますか?
考えられる解決策
これが実際に起こっていることの決定的な証拠はありませんが、この問題の理由は、オブジェクト リレーショナル インピーダンスの不一致によるものだと思います。プログラミングでは、オブジェクトが他のオブジェクトへの参照を保持していることを知っています。これらの参照が失われると、ガベージ コレクションが行われ、それらを指す参照がなくなった「孤立した」オブジェクトが削除されます。私が提供した例でPerson
は、 への参照がありAddress
、 への参照Address
が失われると、他Persons
にも参照がないと仮定して、ガベージ コレクションが行われます。
データベース側では、ガベージ コレクションの概念はありません。データベースには、1 対多または多対多の関係、つまり、子のコレクションを持つ親のみが存在します。と に戻るPerson
と、これは からまでAddress
の 1 対多の関係であることがわかります(各人は 1 つの住所しか持つことができませんが、住所は、共通の住所を共有する人々の世帯など、多くの人に属することができます)。データベースは、親とを子のコレクションと見なします。したがって、 a を削除しても、も削除されるべきではないことは理にかなっています (別の言い方をすれば、本のコレクションを含む本棚がある場合、本を削除しても本棚は削除されません)。Address
Person
Address
Person
Person
Address
では、これを修正するにはどうすればよいでしょうか。子コレクションが空の親を削除する必要があります。この場合、Address
の空のコレクションを持つ をPersons
削除する必要があります。これはビジネス ルールです。 が単独で存在できないとは何も述べていAddress
ませんが、私が開発しているアプリケーションでは、 がAddress
人に関連付けられていなければ意味がないため、削除する必要があります。ただし、他の誰かがやって来てそれを参照するまで、アドレスが孤立した状態のままになる可能性は十分Person
にあります。
nhibernate - NHibernateカスケードなしまだ関連エンティティを更新していません
次に、Fluent NHibernateとその自動マッピング機能を使用して、次の簡略化されたPOCOクラスをマッピングしています。
次に、次のマッピングをオーバーライドして、WebページからWebpageTypeへのカスケードを明示的に設定しません。
純粋なNHibernateリーダーの場合、fluentによって生成されるxmlマッピングは次のとおりです。
問題は、更新がWebページを介してWebpageTypeにカスケードされないことをテストするときに発生します。基本的には、カスケードされます。
私は次のテストを行っています:
上記のテストはグローバルトランザクションにラップされています。
テストは失敗し、NHibernateは関連するWebpageTypeの名前の更新を実行します。削除および保存(新規作成)カスケードは正しく機能し、カスケードされません。
カスケードを誤解したか、ロジック/テストに問題がありますか?
任意のヘルプ/アドバイスをいただければ幸いです。ありがとう。
java - 多対 1 の休止状態では、子が削除されるとすべての親が削除されます
国と州のオブジェクトがあります。私は州から国への一方向の多対一の関係を持つつもりです。以下のようにマッピングを定義した国の状態への参照を保存したくありません。State オブジェクトを 1 つでも削除すると、すべての国が削除されます。
java - Hibernate:数式を使用した多対1
誰かが私が答えを見つけるのを手伝ってくれることを願っています。
私はレガシーデータベースを使用していますが、他のアプリがそれらに依存しているため、既存のテーブルを変更することはできません。
私は3つの主要な既存のテーブルを持っています:A、B、C。
Aには、B(多対1の関係)を参照する列があります。問題は、BではなくCとの関係が必要なことです。そこで、*-1マッピングBCを作成しました。
BまたはBCのJavaエンティティは必要ありません。AとCだけで、AにはフィールドAcが必要です。
これまでのところ、@Formulaアノテーションを使用してみましたが無駄になりました。
これにより、次のSQLが生成されます。
テーブルAに列c_IDがないため、明らかに失敗します(数式が完全に無視されるのはなぜですか?)。
@ManyToOneアノテーションを削除すると、次のようになります。
これは、HibernateがBINARY値(クラスCのシリアル化?)を予期し、受け取った整数をキャストするときに例外をスローすることを除いて、完璧です。
このIDは遅延読み込みには十分なはずですが、どうすればそれを行うことができますか?@ManyToOneを使用すると、式が壊れます。
A、B、Cテーブルを変更したり、JavaクラスBまたはBCを作成したりせずに、ACリンクを実現するにはどうすればよいですか?
情報をありがとう、ダン
java - Hibernate で結合テーブルを一方向の多対 1 のままにしておくにはどうすればよいですか?
私は一方向の多対一の条件でテーブルを結合する方法を便乗していますか? .
2 つのクラスがある場合:
B -> A は多対 1 の関係です。B のコレクションを A に追加できることは理解していますが、その関連付けは必要ありません。
したがって、私の実際の質問は、SQLクエリを作成するHQLまたは基準の方法はありますか?
これにより、A を参照する各 B レコードのデカルト積を持つすべての A レコードが取得され、B を参照していない A レコードが含まれます。
使用する場合:
それは内部結合であり、参照する B を持たない A レコードを受け取りません。
2 つのクエリなしでこれを行う良い方法を見つけられなかったので、それより少ないものは素晴らしいでしょう。
ありがとう。