私はHibernate
@OneToManyとの間に関係が
Table1あります。は所有者であり、関係は一方向です。私は にマップ
していません。Table2Table1Table2Table1
そのため、このマッピングCollectionのTable2
インスタンスのを定義しました。@OneToManyそして、私はすべてをカスケードしています。
この「シナリオ」では、
Table2インスタンスのコレクションを追加しようtable2_aとしており、オブジェクトに
関連しているtable2_bとします。table2_cTable1table1
所有者クラスのインスタンスを保存するときにこの挿入を行う方法はありますか?table1したがって、依存クラスのインスタンスがありtable2_a、カスケードtable2_bに保存されますか? table2_cこれを行おうとすると、エラーが発生します
Duplicate entry '23' for key ...
Hibernate は、セッション内の対応するインスタンスに対して生成さ
れた同じキー値でtable2_a、すべてを保存しようとしてtable2_bいます。では、ここの「多」側を使用するにはどうすればよいですか?table2_cTable2Table1@OneToMany
関係の反対側の 、 on にTable2もTable1マッピングせずに、一方向マッピングをそのまま使用してこの挿入を行う方法はありますか? @ManyToOneテーブルを明るく保ちたいと思っています。
コードはコレクション内の単一のインスタンスの挿入に取り組んでおりTable2、それ以外はすべて問題ありません。
//===========================
編集:コードの関連部分:
で定義された関係Table1-- エンティティ クラス:
@OneToMany(cascade = CascadeType.ALL)
private Collection<Table2> table2Inst = new ArrayList<>();
// getter & setter
pojo で保存を行うコード:
table1 = (Table1)session.get(Table1.class, theId);
if ( table1!=null ) {
table1.getTable2Inst().addAll(contactsList);
session.saveOrUpdate(table1);
}
注:エンティティクラスですべて定義しています。マッピング ファイルには何もありません。