エンティティに、このエンティティをマップする親エンティティがあるかどうかを確認するには、@OneToMany注釈を使用します。 マッピングは一方向Hibernateは自動的にマッピングテーブルを作成する、または場合は、@JoinColumn子テーブルの親IDを持つカラムを使用する親Hibernate:双方向関係のないOneToMany-Childエンティティの親を取得する
@Entity
public class ParentEntity {
...
@OneToMany(cascade=CascadeType.ALL)
private Collection<ChildEntity> childEntities;
...
上で定義されています。 子が永続化されると、hibernateは対応する親のIDをdb-tableに追加します。
私はアプリケーションロジックにこの「機能」は必要なく、変更が必要なエンティティがすでにロードされているので、双方向のリレーションを定義したくありません。レプリケーションの問題については、親が必要です。これは、私は別のDBスキーマ(別のテーブル構造を持つ)にいくつかのデータをエクスポートする必要があることを意味します。
私はインターセプタのインターフェースによって定義された「のOnSave」方法でレプリケーション・アクションをトリガーするインターセプターを使用しています。親が新しい子を取得した場合、子がトリガーする永続アクションのみが存在します。私はそれが属している親を知らない。
本当に助けていただきありがとうございます。
ありがとうございます!
ありがとう、あなたの解決のためのfiro!確かに私は私の親のIDを見つけることができます。少し欠点は、私は常にクエリを実行する必要があります。私は、エンティティインターセプタのような中心的な位置でこれを使用すると、システムが遅くなる可能性があると思います。私が思っていたことは、EntityPersisterのようないくつかのハイバネート内部を通して、この情報を追加のクエリトラフィックを引き起こさずに得ることでした。 – theFriedC
親へのlazyloaded参照は行く方法です。あなたは子供の親を知りたいですか? 'Boolean hasParent = child.parent!= null'をチェックすると、余分なトラフィックがない最も簡単な方法です – Firo
私は持っていないし、双方向関係を構築したくないので、child.parentはありません(大きなシステム - 。私はかなり異なるデータ構造にエクスポートする必要があるので、少し混乱します。それにもかかわらず、私は解決策を見つけました - 下を見てください。おかげでFiro! – theFriedC