在补充表中使用forein键的java无向一对一映射?
我有两个一对一关系的表,包括学生和地址表
Student
student_id
name
Address
address_id
student_id(foreign key to student_id in student table)
...
以下是相关实体部分
@Entity
@Table(name = "STUDENT")
public class Student {
@Id
@GeneratedValue
@Column(name = "STUDENT_ID")
private long id;
@OneToOne
private Address address;
}
@Entity
@Table(name = "ADDRESS")
public class Address {
@Id
@GeneratedValue
@Column(name = "ADDRESS_ID")
private long id;
private long student_id;
}
我想将外键student_id(foreign key to id in student table)
保留在地址表下,如顶部的表结构所示,但
希望将private Address address
的无向关联保留在学生实体下。我不知道如何实现它
我尝试的是这个
@实体 @表(name=“STUDENT”) 公立班学生{
@Id
@GeneratedValue
@Column(name = "STUDENT_ID")
private long id;
@OneToOne(mappedBy ="student_id")
private Address address;
}
@Entity
@Table(name = "ADDRESS")
public class Address {
@Id
@GeneratedValue
@Column(name = "ADDRESS_ID")
private long id;
@OneToOne
@JoinColumn(name="student_id")
private long student_id;
}
但它给出了以下例外
@OneToOne or @ManyToOne on Address.student_id references an unknown entity: int
at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:107)
at org.hibernate.cfg.Configuration.processEndOfQueue(Configuration.java:1580)
at
我一和他交往就行了
private Student student_id
而不是private long student_id
所以,在某种程度上,Hibernate迫使我在辅助表(在本例中为地址表)中存在外键时使关联双向
共 (0) 个答案