0

我有两个实体

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

4

2 回答 2

2

这是相当典型的情况,每个都应该用@ManyToOne注释。如果每个关系只有一个 B 可以与给定的 A 相关联,则应使用@OneToOne 。如果从实体生成数据库模式,则使用 @OneToOne 将在外键中存在唯一约束。

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

 @JoinColumn(name="preferred_column_name")
于 2013-02-18T19:48:06.890 回答
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;
}
于 2013-02-19T10:00:05.803 回答