有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

hibernate实体中的java复杂关系

我对3个实体之间的关系有以下问题:Form、FormConfig和GroupForms。这个模型在表单和GroupForms之间有很多关系,但是有一些额外的数据与这个连接相关,所以我对实体FormConfig进行了建模。表单在OneToMany关系中与FormConfig相关,GroupForms在OneToMany关系中与FormConfig相关。在代码中,它看起来像:

形式。爪哇:

...
@OneToMany(mappedBy = "form", cascade = CascadeType.ALL)
private List<FormConfig> formConfigs = new ArrayList<FormConfig>();
...

团体形式。爪哇:

...
@OneToMany(mappedBy="group", fetch=FetchType.EAGER)
private List<FormConfig> formConfigs = new ArrayList<FormConfig>();

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 */
}

我调用这个函数两次,对于一个组,这意味着我想创建两个表单,这些表单应该在一个组中。但不幸的是,使用hibernate的查询返回了实体GroupForms中的两行。我检查我的表,表中只有一行与实体GroupForms关联。有人能帮忙吗?我不知道为什么hibernate返回的GroupForms比数据库中的多

问候


共 (1) 个答案