首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >覆盖连接-使用JPA/Hibernate继承外键名

覆盖连接-使用JPA/Hibernate继承外键名
EN

Stack Overflow用户
提问于 2015-10-03 16:44:38
回答 1查看 2.6K关注 0票数 10

我有一张带有继承自类媒体的类CD:

CD:

代码语言:javascript
运行
复制
@Entity
public class CD extends Media {
   ...
}

媒体:

代码语言:javascript
运行
复制
@Entity(name = "media")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Media extends PersistenceId<Long> {
   ...
}

JPA自动生成外键名,我想用我想要的名称覆盖它:

03-10 18:16:58.174主要调试org.hibernate.SQL -更改表cd添加约束FK_ehd468g2cptgh6bq6sxe75xlf外键(id)引用媒体(id)

怎么做?我试过:

代码语言:javascript
运行
复制
@Entity
@AssociationOverride(
   name = "id",
   foreignKey = @ForeignKey(name = "fk_cd_media")
)
public class CD extends Media {
   ...
}

代码语言:javascript
运行
复制
@Entity
@PrimaryKeyJoinColumn(foreignKey=@ForeignKey(name = "fk_cd_media"))
public class CD extends Media {
   ...
}

但不起作用。

下面是生成的create表sql:

代码语言:javascript
运行
复制
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;

我想:

代码语言:javascript
运行
复制
CONSTRAINT `fk_cd_media` FOREIGN KEY (`id`) REFERENCES `media` (`id`)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-16 13:33:13

你的第二次尝试就是要走的路:

代码语言:javascript
运行
复制
@Entity
@PrimaryKeyJoinColumn(foreignKey=@ForeignKey(name = "fk_cd_media"))
public class CD extends Media {
   ...
}

问题是你面临着一个Hibernate错误:https://hibernate.atlassian.net/browse/HHH-10352

编辑:问题解决了:

修正版本/s: 5.0.10、5.2.1、5.1.1

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32924987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档