我有两个实体
@Entity
class A {
@Id
private Long Id;
//attributes of A
}
@Entity
class B {
xxx
private A instanceOfA_1;
xxx
private A instanceOfA_2;
}
如您所见,我在B类中有两个A类属性。
你如何在Hibernate中注释这两个属性? 最后,在数据库中,我希望在表B中找到两列,每列包含表A中的键ID。
我想这是一个简单的ORM问题,但我没有设法让它独自一人......
编辑:在上述回复之后,您建议我执行以下操作?
@Entity
class A {
@Id
private Long Id;
//attributes of A
}
@Entity
class B {
@ManyToOne
private A instanceOfA_1;
@ManyToOne
private A instanceOfA_2;
}
这会创建以下表格吗?
Table A
id
attributes
Table B
a_id_1
a_id_2
如何指定表B中列的名称(即a_id_1和a_id_2)?
答案 0 :(得分:2)
这是相当典型的情况,每个都应该用@ManyToOne注释。如果每个关系只有一个B可以与给定的A相关,则应该使用@OneToOne。如果数据库模式是从实体生成的,使用@OneToOne时,外键中将存在唯一约束。
@JoinColumn可用于指定外键列的名称:
@JoinColumn(name="preferred_column_name")
答案 1 :(得分:1)
试试这个:
@Entity
class A {
@Id
private Long Id;
}
@Entity
class B {
@ManyToOne
@JoinColumn(name="A_1")
private A instanceOfA_1;
@ManyToOne
@JoinColumn(name="A_2")
private A instanceOfA_2;
}