Hibernate 如何绘制这样的地图
我以前从未见过这样的事情Hibernate 如何绘制这样的地图,hibernate,jpa,one-to-one,Hibernate,Jpa,One To One,我以前从未见过这样的事情 EntityA @Id long id @Column(name ="field1") String field1 @Column(name ="field2") String field2 @IdClass(compositePK.class) EntityB @Id String field1 @Id String field2 @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL) Enti
EntityA
@Id
long id
@Column(name ="field1")
String field1
@Column(name ="field2")
String field2
@IdClass(compositePK.class)
EntityB
@Id
String field1
@Id
String field2
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
EntityA myEntityA
Ok all Ok(正常)表B
需要将实体A
作为外键,但在id上定义,而不是在字段1、字段2
上
我犯了这样的错误
外键(FK74D979395D87E41E:EntityA[id])的列数必须与引用的主键(EntityA[field1,field2])的列数相同
我理解hibernate要求FK必须与PK相同,但我无法做到这一点,
entityB
PK必须保持field1,field2
我暂时无法更改EntityA
。根据我从您的代码中了解,你有一个简单的PKid
的EntityA
和一个复合PKCompositePK
的EntityB
。要使@OneToOne
关联起作用,两个实体需要共享一个主键/具有相同的PK类(或至少一个模拟PK的唯一约束)
无法将此类映射用于此结构,您应该:
- 一致地调整数据模型,以便
和EntityA
共享它们的PK,或者有一个从EntityB
到EntityB
的FK李>EntityA
- 使用一个
,即使它总是在“多”端包含“一”OneToMany
那代码不可读。重新格式化它,以便我们能够阅读和理解它。