不想坚持一对一的实体

时间:2014-08-07 14:57:41

标签: java hibernate jpa

假设我有两个课程EmployeeDepartment

Employee我写过:

@OneToOne( fetch = FetchType.EAGER, cascade = {CascadeType.ALL})
@JoinColumn(name="deptID")    
private Department department;

Department类有Id和Name。 (就像部门硕士一样)。

我有一个视图,我使用select / combo框选择Department。当我提交表单并将Employee对象传递给它时,它会detached entity passed to persist。我想只保存具有外键值的员工实体,而Department已经有记录。

1 个答案:

答案 0 :(得分:1)

你告诉JPA cascade all!并传递了分离的对象来保存,这是一个问题。根据{{​​3}} 当你坚持雇员坚持部门时,CascadeType.PERSIST会起作用。 根据hibernate doc:
CascadeType.PERSIST: cascades the persist (create) operation to associated entities persist() is called or if the entity is managed 所以你的选择:

  • 传递附加到员工的托管或临时部门对象 宾语。
  • 在坚持之前合并分离的一个?
  • 删除所有级联并仅选择您需要的级联类型
  • 完全删除级联类型。

请参阅hibernate doc