У меня есть такая структура таблицы:
Структура таблицы
Зависимости являются однонаправленными.
Мои классы 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
}
Когда я запускаю мое приложение для весенней загрузки, встречается следующая ошибка
Foreign key (FKakdpaxm8kl8mv0ld210dg7mcw:t2 [c11,c12,c31])) must have same number of columns as the referenced primary key (t3 [t31])
Однако, если я просто закомментирую зависимость какой-либо одной таблицы, t3 или t1. Создается правильный внешний ключ с указанным именем FK.