我对 3 个实体之间的关系有以下问题:Form、FormConfig 和 GroupForms。模型是Form和GroupForms之间的manyToMany关系,但是有一些额外的数据与这个join关联,所以我建模了实体FormConfig。Form 与 OneToMany 关系中的 FormConfig 相关,GroupForms 与 OneToMany 关系中的 FormConfig 相关。在代码中它看起来像:
表单.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 */
}
我两次调用这个函数,一组,这意味着我想创建两个表单,这些表单应该在一个组中。但不幸的是,使用休眠的查询在实体 GroupForms 中返回了两行。我检查了我的表格,表格中只有一行与实体 GroupForms 关联。任何人都可以帮忙吗?我不知道为什么休眠返回的 GroupForms 比数据库中存在的多。
问候