具有@OneToMany属性的可嵌入实体

时间:2012-03-26 19:00:32

标签: hibernate jpa-2.0

说,我有以下实体:

@Entity
public class A {
  @Id
  @GeneratedValue
  private Long id;

  @Embedded
  private B b;

  //getters and setters
}

@Embeddable
public class B {
  @OneToMany
  private List<C> cList;
  //getters and setters
}

@Entity
public class C {
  @Id
  @GeneratedValue
  private Long id;
  //other fields, getters and setters
}

Hibernate中使用架构自动生成功能我得到一个附加表,其中包含AC之间的映射。但我想通过将A id 添加到C,例如没有附加表)来实现一对多关系。

这可能吗?如果是,我应该使用哪些注释来创建这样的映射?

1 个答案:

答案 0 :(得分:9)

通常,@JoinColumn注释可以实现。它也适用于嵌入式。

@OneToMany
@JoinColumn(name="A_ID")
private List<C> cList;

如果您对embeddable中给出的列的A_ID名称不满意,可以覆盖实体A中的列名:

@AssociationOverride(name= "cList",
        joinColumns = @JoinColumn(name="SOME_NAME_FOR_JOIN_COLUMN_IN_TABLE_C"))
@Embedded
private B b;
相关问题