ich eine Klasse CD mit vererben Klasse Medien haben:Aufschalten verbunden Vererbung Fremdschlüssel Namen mit JPA/Hibernate
CD:
@Entity
public class CD extends Media {
...
}
Medien:
@Entity(name = "media")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Media extends PersistenceId<Long> {
...
}
JPA generiert automatisch ein Fremdschlüssel Namen, und ich möchte diese möchte ich mit dem Namen außer Kraft zu setzen:
03-10 18: 16: 58,174 [main] DEBUG org.hibernate.SQL - alte Tabelle cd Einschränkung FK_ehd468g2cptgh6bq6sxe75xlf Fremdschlüssel (id) verweist Medien (id)
Wie fügen Sie das tun? Ich habe versucht:
@Entity
@AssociationOverride(
name = "id",
foreignKey = @ForeignKey(name = "fk_cd_media")
)
public class CD extends Media {
...
}
und
@Entity
@PrimaryKeyJoinColumn([email protected](name = "fk_cd_media"))
public class CD extends Media {
...
}
, aber es funktioniert nicht.
Hier wird die Tabelle SQL erstellen generiert:
CREATE TABLE `cd` (
`artist` varchar(255) DEFAULT NULL,
`year` int(11) NOT NULL,
`id` bigint(20) NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `FK_ehd468g2cptgh6bq6sxe75xlf` FOREIGN KEY (`id`) REFERENCES `media` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Ich mag würde:
@Entity
@PrimaryKeyJoinColumn([email protected](name = "fk_cd_media"))
public class CD extends Media {
...
}
Das Problem ist, Sie:
der Weg zu gehenCONSTRAINT `fk_cd_media` FOREIGN KEY (`id`) REFERENCES `media` (`id`)