2015-10-03 2 views
5

У меня есть класс CD с наследуют от класса СМИ:Override присоединился наследование внешнего ключа имя с JPA/Hibernate

CD:

@Entity 
public class CD extends Media { 
    ... 
} 

СМИ:

@Entity(name = "media") 
@Inheritance(strategy = InheritanceType.JOINED) 
public abstract class Media extends PersistenceId<Long> { 
    ... 
} 

JPA автоматически генерирует имя иностранного ключа, и я хотел бы переопределить это имя, которое я хочу:

03-10 18: 16: 58,174 [главная] DEBUG org.hibernate.SQL - изменить таблицу кд добавить ограничение FK_ehd468g2cptgh6bq6sxe75xlf внешнего ключа (ID) ссылки СМИ (ID)

Как сделать это? Я пробовал:

@Entity 
@AssociationOverride(
    name = "id", 
    foreignKey = @ForeignKey(name = "fk_cd_media") 
) 
public class CD extends Media { 
    ... 
} 

и

@Entity 
@PrimaryKeyJoinColumn([email protected](name = "fk_cd_media")) 
public class CD extends Media { 
    ... 
} 

, но он не работает.

Вот это создать таблицу SQL генерироваться:

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; 

Я хотел бы:

CONSTRAINT `fk_cd_media` FOREIGN KEY (`id`) REFERENCES `media` (`id`) 

ответ

Смежные вопросы