Hibernate 同一实体的两个属性

Hibernate 同一实体的两个属性,hibernate,Hibernate,我有两个实体 @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中的

我有两个实体

@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)?

这是一种非常典型的情况,每个列都应加上注释。如果每个关系只有一个B可以与给定A相关,则应使用。如果数据库架构是从实体生成的,则使用@OneToOne时,外键中将有唯一约束

可用于指定外键列的名称:

 @JoinColumn(name="preferred_column_name")

这是一种非常典型的情况,每种情况都应该加上注释。如果每个关系只有一个B可以与给定A相关,则应使用。如果数据库架构是从实体生成的,则使用@OneToOne时,外键中将有唯一约束

可用于指定外键列的名称:

 @JoinColumn(name="preferred_column_name")
试试这个:

@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;
}
试试这个:

@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;
}

谢谢JB,补充回答。用户1446127,添加了指向@JoinColumn文档的说明和链接。谢谢JB,添加到答案中。用户1446127,添加了指向@JoinColumn文档的说明和链接。