I have a one-to-one relationship using PrimaryKeyJoinColumn annotated on the parent side. And now I want to save the child object by itself.
For example, I have Employee and EmpInfo as a child, I need to save EmpInfo (of course, after setting the parent id property for it). However, when such a layout is used, I get the exception below ...
org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist
Any ideas why sleep mode doesn't allow this? To be more clear, the code I have is below ...
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; } }
How am I trying to save it ...
Employee emp = new Employee(); emp.setEnumId(SimpleEnum.COMPLETE); emp.setName("Shreyas"); EmployeeInfo info = new EmployeeInfo(); info.setEmail(" Sh@gmail "); concreteDAO.save(emp);
Any pointers would be much appreciated, how can I try to save a child?
source share