Java 为什么不在hibernate中插入外键
我有两个实体。员工和地址。该实体之间的关系为@OneToOne。当我想插入数据库时,外键不能插入表中。 我的实体是:Java 为什么不在hibernate中插入外键,java,hibernate,Java,Hibernate,我有两个实体。员工和地址。该实体之间的关系为@OneToOne。当我想插入数据库时,外键不能插入表中。 我的实体是: @Entity @Table(name="Address") public class Address{ @Id @Column(name="Id") private int Id; @OneToOne(fetch=FetchType.LAZY) @JoinColumn(name="emp_id", insertable=true
@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);
是否应指定数据库表中的外键?您只需要在关系的拥有方使用@JoinColumn。所以,若在数据库中有从地址表、列emp_id到Employee表、列id的外键,那个么映射应该如下所示
地址
雇员
你错过了外宾的@manytonekey@indian我不完全明白你的意思。你能分享你的DB表结构吗?它工作正常。谢谢你的关注。
@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;