2015-10-03 10 views
5

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 gehen
CONSTRAINT `fk_cd_media` FOREIGN KEY (`id`) REFERENCES `media` (`id`) 

Antwort

Verwandte Themen