【发布时间】:2015-12-31 17:10:42
【问题描述】:
我有一个继承自 Media 类的 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 [main] 调试 org.hibernate.SQL - 更改表 cd 添加 约束 FK_ehd468g2cptgh6bq6sxe75xlf 外键 (id) 引用 媒体(id)
如何做到这一点?我试过了:
@Entity
@AssociationOverride(
name = "id",
foreignKey = @ForeignKey(name = "fk_cd_media")
)
public class CD extends Media {
...
}
和
@Entity
@PrimaryKeyJoinColumn(foreignKey=@ForeignKey(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`)
【问题讨论】:
标签: mysql hibernate jpa foreign-keys