一尘不染

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

hibernate

说,我有以下实体:

@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我得到了一个附加表,其中包含A和之间的映射C。但是,我想实现通过添加一个一对多的关系A
编号C例如,没有附加表 )。

这可能吗?如果是,我应该使用什么注释来创建这种映射?


阅读 252

收藏
2020-06-20

共1个答案

一尘不染

通常,使用@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;
2020-06-20