我正在尝试在两个实体之间建立零对一的关系。也就是说,Parent 可以在没有关联的 Child 实体的情况下保存,也可以与关联的 Child 一起保存。以下是 2 个实体类...
员工(父母)
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name="EMP_NAME")
private String name;
@PrimaryKeyJoinColumn
@OneToOne(cascade = {CascadeType.ALL})
private EmployeeInfo info;
@Column(name="EMP_ENUM")
private Integer enumId;
员工信息(儿童)
public class EmployeeInfo {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(name="EMPLOYEE_EMAIL")
private String email;
在 MySql DB 中,将唯一 Parent (Employee) 表的这种关系和 id 列设置为 AUTO INCREMENT ,问题是在保存 Parent->Child 对象图时,我得到以下异常
org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access: SQLException for SQL [insert into EMP_INFO
Caused by: java.sql.SQLException: Field 'id' doesn't have a default value
我尝试在 DB 中将 Child Table 的 Id 属性设置为 AUTO INCREMENT,这样的 Parent->Child 对象图的持久性是成功的。但是,这里描述的问题浮出水面,因为我有一个场景,我想在没有关联 EmpInfo 对象的情况下保存父 (Employee) 对象,因此不希望在 Child's id column 上有 AUTO INCREMENT。
一种解决方案可能是不使用 PrimaryKeyJoinColumn,而是使用特定的 JoinColumn,但这会在我现有的表中添加一个不必要的列。
有没有人遇到过这样的问题?如果是的话,任何指针都会很有帮助。