問題タブ [bidirectional-relation]

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.

0 投票する
1 に答える
232 参照

java - Javaでも双方向関係を更新する必要がありますか?

エンティティがUserありGroup、それらの間に 1 対多の関係を持たせたいとします。つまり、それぞれUserが 1 つの に属しますがGroup、 any には複数のGroupが含まれる場合がありますUser

グループ エンティティ:

およびユーザーエンティティ:

以下は、アプリケーション コードです。

残念ながら、getUser()常に戻りnullます。なんで?関連ユーザーの代表として設定されていませんか?私が間違っていることは何ですか?

自分でコレクションの同期を行う必要がありますか? Hibernate はフィールドを自動的に埋めませんか?

更新 1

私の休止状態の設定は次のとおりです。

の追加

役に立ちませんでした。

更新 2

追加する

役に立ちませんでしたgetUsers()。それでも null を返します。

0 投票する
2 に答える
6182 参照

hibernate - Hibernate: 双方向マッピング OneToMany が機能しない

次の3つのクラスがあります。

2 番目のクラス:

3 番目のクラス:

ここで公式の休止状態のドキュメントに従っています: http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#collections-bidirectional

この例はこちら: http://viralpatel.net/blogs/hibernate-one-to-many-annotation-tutorial/

問題は、DB に EventTO を挿入しているときに、eventId で制約違反が発生することです。これは、hibernate が EventAssignedResourceTO の eventTO に新しく作成されたイベントの ID を設定できず、ID が null であるためです。

そこで、EventAssignedResourceTO の JoinColumn アノテーションにある更新可能で挿入可能なタグを削除することにしました。

挿入は適切に機能しますが、イベントを削除したい場合、hibernate は最初に AssignedResourceTO を削除してからイベントを削除し、最後にテーブル内の AssignedResourceTO のレコードを更新しようとする理由がわかりません。ここで、eventTO の ID を NULL に設定しようとすると、制約違反が発生します。更新の場合も同様です。

公式ドキュメントに書かれていることが機能せず、ウェブ上で解決策を見つけることができなかったため、本当に混乱しています。

何か案が??

乾杯

0 投票する
1 に答える
128 参照

python - Python の ZODB での双方向マッピング

ZODB では、 BTreeを使用して大量のデータを格納し、ツリーのサイズに対して対数的な順序でキーに基づいてルックアップできることを知っています。

問題は、いくつかのPersistentobjectとFoo他のPersistentオブジェクトがあり、 bidictBarの意味で、それらの間の双方向マッピングを保存したいということです。

つまり、次の 2 つのアクセスを実行するのは効率的 (対数時間) である必要があります。

今考えられる唯一の便利な方法は、単純にストレージ要件を 2 倍にし、2 つの を維持することBTreesです。1 つは A から B へのマッピングを格納し、もう 1 つは B から A へのマッピングを格納します。もちろん、常に、BTree にはマッピングの追加と削除は両方でタンデムに実行されるため、同じ要素です。

これに関する私の懸念は、データベースの制約がないとツリーが分離される可能性があることです。これは実行可能だと思いますか?

0 投票する
1 に答える
1998 参照

relational-database - Amazon dynamo データベースとリレーショナル データベースの間でデータを同期する方法

Amazon Dynamo db でアプリケーションを開発する予定です。実際、このアプリケーションはクライアントのデータベース (クライアントは MYSQL、Oracle、MSsql/その他のリレーショナル データベースを使用しています) から情報を収集し、アプリケーションで何らかのプロセスを実行し、結果をクライアントのデータベースに送り返します。この同期プロセスは、常に (または 1 分間隔ごとに) 機能する必要があります。

Amazon dynamo データベースとリレーショナル データベース間の同期に使用できるツール (またはトリック) はありますか?

0 投票する
1 に答える
1077 参照

java - JPA - 双方向の OneToMany/ManyToOne 関係でコレクションを更新する方法

このように設計された所有者 (カテゴリ) と顧客 (フォーラム) エンティティがあります。

カテゴリー

フォーラム

Web アプリケーションのどこかにフォーラム リストを表示し、そのうちの 1 つでビジネス アクションを実行します。たとえば、位置を変更します。

私の問題は、変更がデータベースに適切に保持されているが、 OneToMany マップされたコレクションに反映されていないことです。したがって、リストを表示するページを更新すると、新しい位置ではなく前の位置が表示されます。

要素の位置を更新するために使用するコードは、単純なem.merge( forum ). 双方向の関係を「手動で管理」する必要があるという多くのトピックを読みました。そうしないと、この種の問題に直面することになります。ここに私の2つの質問があります:

  • EclipseLink と Hibernate の両方で試してみましたが、Hibernate ではうまく動作しますが (リストは更新されています)、EclipseLink では動作しません。キャッシングモードの違いに関連していますか?
  • リストの要素のプロパティの 1 つが変更されたこと (たとえば、フォーラム リスト内のフォーラムの位置プロパティ) を手動で通知するにはどうすればよいですか?

[編集]このトピックを読みましたが、私の問題は、リストの取得に使用されているセッションとは別のセッションによってフォーラムが更新されていることに関連していると感じています。私はそれを正しく理解していますか?はいの場合、そのケースを正しく管理する方法は?

0 投票する
2 に答える
12843 参照

java - JPA更新双方向関連

次のエンティティがあるとします。

次のように、関係の両側を維持する必要があることは、アップデートで理解できます。

今まではすべて順調です。問題は、次のように両側でマージを適用する必要があり、カスケードを使用した 2 番目のマージを回避する必要があるかどうかです。

それとも、所有側をマージするだけで十分ですか? また、これらのマージはトランザクションまたは EJB 内で行う必要がありますか? それとも、切り離されたエンティティを持つ単純なコントローラー メソッドでそれを行うだけで十分ですか?

0 投票する
1 に答える
242 参照

hibernate - リレーションシップを持つオブジェクトを削除する - Hibernate

Hibernate 関係と Save-Update-Delete に問題があります。私が次のものを持っているとしましょう:




問題は、サブジェクトには関係があるため、単純にサブジェクトを削除することはできません。つまり、科目を削除すると、その科目を持つすべてのコースも削除する必要があります。また、コースが削除された場合、そのコースに「属する」サブジェクトは存在するはずです。グレードとコースでも同じことが起こります。

私の解決策は(一時的に)次のとおりです。サブジェクトを削除するメソッドは、サブジェクト自体を削除する前に、そのサブジェクトを持つすべてのコースを削除するメソッドを呼び出します。

しかし、これは正しい方法ではないと確信しています。CascadeType がこの問題を解決することはわかっていますが、どちらをいつ使用すればよいかわかりません。

今、Hibernate について話しているのですが、すべての関係は双方向であるべきですか?