说,我有以下实体:
@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
的 id 添加到C
(,例如没有附加表)来实现一对多关系。
这可能吗?如果是,我应该使用哪些注释来创建这样的映射?
答案 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;