我有一個使用PrimaryKeyJoinColumn
在父級註釋的一對一關係。現在我想自己保存子實體。休眠JPA一對一保存子類實體
例如,我有Employee
和EmpInfo
作爲子實體,我需要保存EmpInfo
(當然在設置父級的id屬性後)。然而,當使用這樣的安排,我得到下列異常...
org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist
任何想法,爲什麼Hibernate沒有允許這樣做?爲了更清楚,我的代碼有低於...
ParentEntity:
public class Employee {
private Long id;
private String name;
private EmployeeInfo info;
private Integer enumId;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
return id;
}
@Column(name="EMP_NAME")
public String getName() {
return name;
}
@PrimaryKeyJoinColumn
@OneToOne(cascade = CascadeType.REMOVE)
public EmployeeInfo getInfo() {
return info;
}
}
ChildEntity:
@Table(name="EMP_INFO")
@Entity
public class EmployeeInfo {
private Long id;
private String email;
@Column(name="EMPLOYEE_EMAIL")
public String getEmail() {
return email;
}
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "emp_id", nullable = false)
public Long getId() {
return id;
}
}
我試圖挽救它是這樣的.. 。
Employee emp = new Employee();
emp.setEnumId(SimpleEnum.COMPLETE);
emp.setName("Shreyas");
EmployeeInfo info = new EmployeeInfo();
info.setEmail("[email protected]");
concreteDAO.save(emp); // This uses the JPATemplate provided by Spring JpaDaoSupport
info.setId(emp.getId());
concreteDAO.saveEmpInfo(info);
任何po inters非常感謝,至於我怎樣才能嘗試保存子實體?
大感謝很多的大開眼界,我做了昨晚一樣(之前我看到這個帖子),它解決了這個問題。 但是,我不確定這是否是一種好的做法(因爲它可能會導致因服務用戶將不正確的ID設置爲EmployeeInfo而導致數據損壞),還是應請求服務用戶傳遞整個對象圖(父對象以及孩子)拯救... – PaiS 2010-08-17 06:05:31