【发布时间】:2020-07-05 22:06:56
【问题描述】:
我有一个这样的表结构:
依赖是单向的。
我的 POJO 类如下所示:
class T1 {
@EmbeddedId T1PK t1Pk;
String c13;
// getter setter
}
@Embeddable
class T1PK {
String c11;
String c12;
// getter setters hashCode equals
}
class T3 {
@Id String T31
String T32
// getter setter
}
@Embeddable
class T2PK {
T1PK t1Pk;
String c31;
// getter setters hashCode equals
}
class T2 {
@EmbeddedId T2PK t2Pk;
@MapsId("c31")
@JoinColumn(name = "c31", referencedColumnName = "c31", foreignKey = @ForeignKey(name = "FK_32"))
@OneToOne
private T3 t3;
@MapsId("t1Pk")
@JoinColumns(foreignKey = @ForeignKey(name = "FK_12"), value = {
@JoinColumn(name = "c11", referencedColumnName = "c11"),
@JoinColumn(name = "c12", referencedColumnName = "c12") })
@OneToOne
private T1 t1;
// getter setter
}
当我启动我的 spring boot 应用程序时,遇到以下错误
Foreign key (FKakdpaxm8kl8mv0ld210dg7mcw:t2 [c11,c12,c31])) must have same number of columns as the referenced primary key (t3 [t31])
但是,如果我只是注释掉任何一个表 t3 或 t1 的依赖关系,它就可以正常工作。将创建具有提到的 FK 名称的正确外键。
【问题讨论】:
标签: mysql spring-boot jpa spring-data-jpa