Form、FormConfig、および GroupForms の 3 つのエンティティ間の関係に次の問題があります。モデルは Form と GroupForms の間の manyToMany 関係ですが、この結合に関連付けられた追加データがいくつかあるため、エンティティ FormConfig をモデル化しました。Form は FormConfig と OneToMany の関係で関連付けられ、GroupForms は FormConfig と OneToMany の関係で関連付けられます。コードでは次のようになります。
フォーム.java:
...
@OneToMany(mappedBy = "form", cascade = CascadeType.ALL)
private List<FormConfig> formConfigs = new ArrayList<FormConfig>();
...
GroupForms.java:
...
@OneToMany(mappedBy="group", fetch=FetchType.EAGER)
private List<FormConfig> formConfigs = new ArrayList<FormConfig>();
フォーム構成:
...
@ManyToOne
@JoinColumn(name = "kf_grupa_id")
private GroupForms group;
@ManyToOne
@JoinColumn(name = "kf_formularz_id")
private Form form;
....
グループを作成しましたが、新しいフォームを作成して GroupForms に参加させたいので、次のようにします。
void createFormInGroup(GroupForms groupForms) {
Form form = new Form();
/*setters execution*/
form.set(..);
....
FormConfig formConfig = new FormConfig();
/*setters execution*/
formConfig.set(..);
....
formConfig.setGroup(groupForms);
formConfig.setForm(form);
form.getFormConfigs().add(formConfig);
groupForms.getFormConfigs().add(formConfig);
/* code responsible for beginTransaction */
session.saveOrUpdate(formConfig);
session.saveOrUpdate(form);
session.saveOrUpdate(groupForms);
/* code responsible for endTransaction */
}
この関数を 1 つのグループに対して 2 回呼び出します。つまり、2 つのフォームを作成する必要があり、それらのフォームは 1 つのグループに含める必要があります。残念ながら、hibernate を使用したクエリでは、エンティティ GroupForms に 2 つの行が返されます。テーブルを確認しましたが、エンティティ GroupForms に関連付けられたテーブルには 1 行しかありません。誰でもそれを手伝ってもらえますか?休止状態がデータベースに存在するよりも多くの GroupForms を返す理由がわかりません。
よろしく