Ich benutze Spring-Boot 1.5.4 mit Feder-Daten-Jpa und ich versuche, den automatisch generierten Fremdschlüssel-Namen während spring.jpa.hibernate.ddl-auto=create
zu überschreiben.Überschreiben Sie den fremden Schlüsselname, der auf zusammengesetzten Schlüssel verweist JPA/Hibernate
Für einfache id konnte ich es außer Kraft zu setzen: simple_fk
Hibernate: alter table my_entity add constraint simple_fk foreign key (simple_id) references simple
Aber nicht für Fremdschlüssel mit Composite-ID: FKms12cl9ma3dk8egqok1dasnfq
Hibernate: alter table my_entity add constraint FKms12cl9ma3dk8egqok1dasnfq foreign key (composite_id1, composite_id2) references composite
Was mit meinem Code falsch? Ich habe auch versucht @PrimaryKeyJoinColumn
.
Bitte beachten Sie die Klassendefinitionen unten.
@Entity
public class Simple {
@Id
private long id;
}
@Entity
public class Composite {
@Id
private CompositeId id;
}
@Embeddable
public class CompositeId {
@Column
private long id1;
@Column
private long id2;
}
@Entity
public class MyEntity {
@ManyToOne
@JoinColumn(foreignKey = @ForeignKey(name = "simple_fk"),
name = "simple_id", referencedColumnName = "id")
private Simple simple;
@ManyToOne
@JoinColumns(foreignKey = @ForeignKey(name = "composite_fk"), value = {
@JoinColumn(name = "composite_id1", referencedColumnName = "id1"),
@JoinColumn(name = "composite_id2", referencedColumnName = "id2")
})
private Composite composite;
}