同一实体的两个属性

时间:2013-02-18 19:41:07

标签: 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中的键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)?

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