@Entity
@Table(name="Address")
public class Address{
@Id
@Column(name="Id")
private int Id;
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="emp_id",
insertable=true, updatable=false,
nullable=true)
private Employee employee ;
和员工实体
@Entity
@Table(name="EMPLOYEE")
public class Employee{
@Id
@GeneratedValue
@Column(name="emp_id")
private int emp_id;
@OneToOne(fetch =FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name="emp_id",
insertable=true, updatable=false,
nullable=true)
private Address address;
和添加员工的代码
Employee employee = new Employee("john" , ... );
Address address = new Address("USA" , ...);
employee.setAddress(address);
address.setEmployee(employee);
employeeService.addEmployee(employee);
是否应指定数据库表中的外键?
答案 0 :(得分:0)
你只需要在关系的拥有方@JoinColumn
。因此,如果在数据库中您有Address
表,列emp_id
到Employee
表,列id
的外键,则映射应该如下所示
<强>地址强>
@Entity
@Table(name="Address")
public class Address {
...
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="emp_id",
insertable=true, updatable=false,
nullable=true)
private Employee employee ;
<强>员工强>
@Entity
@Table(name="EMPLOYEE")
public class Employee{
...
@OneToOne(fetch =FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "employee")
private Address address;