使用Hibernate Annotation从Parent表创建并填充子表

时间:2012-05-28 12:43:43

标签: java hibernate one-to-one

我需要从表EMPLOYEE创建一个表EMPLOYEE_REMARK。 并且需要使用Annotation Hibernate。

EMPLOYEE

EMP_ID,EMP_FNAME,EMP_LNAME

EMPLOYEE_REMARK

EMP_REMARK_ID,EMP_ID,REMARK

它将是OnetoOne关系,即,对于每个EMP_ID,将有一个备注。 REMARK可以为空。

请帮我解决问题... 可以通过从员工创建一个类并从中填充EMPLOYEE_REMARK来完成吗???

1 个答案:

答案 0 :(得分:0)

基本上这就是做你想做的事的方式。

员工

@Entity
@Table(name = "EMPLOYEE")
public class Employee implements Serializable {

    @Id
    @Column(name = "EMP_ID")
    private Long id;
    @Column(name = "EMP_FNAME")
    private String firstName;
    @Column(name = "EMP_LNAME")
    private String lastName;
    @OneToOne(mappedBy = "employee", cascade = CascadeType.ALL,
    orphanRemoval = true)
    private EmployeeRemark employeeRemark;

    public void setRemark(String remark) {
        this.employeeRemark = new EmployeeRemark();
        this.employeeRemark.setRemark(remark);
        this.employeeRemark.setEmployee(this);
    }

    public String getRemark() {
        return employeeRemark == null ? null : employeeRemark.getRemark();
    }

    //getters and setters
}

员工备注

@Entity
@Table(name = "EMPLOYEE_REMARK")
public class EmployeeRemark implements Serializable {

    @Id
    @Column(name = "EMP_REMARK_ID")
    private Long id;
    @OneToOne
    @JoinColumn(name = "EMP_ID")
    private Employee employee;
    @Column(name = "REMARK")
    private String remark;

    //getters and setters
}

保存员工时,只需为员工打电话保存即可。 EmployeeRemark将级联到所有操作,并将与员工一起删除,或者如果它以其他方式成为孤儿。