首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用MySQL,为什么Hibernate/JPA不为我创建外键约束?

使用MySQL,为什么Hibernate/JPA不为我创建外键约束?
EN

Stack Overflow用户
提问于 2012-01-04 08:30:14
回答 2查看 8.2K关注 0票数 11

之所以在这里记录下来,是因为我刚刚浪费了一个小时试图弄清楚这一点。

我有一个实体Foo:

代码语言:javascript
复制
@ManyToOne(optional = false)
@JoinColumn(name = "barId")
private Bar bar;

为什么Hibernate不在foo.bar -> bar.id上创建外键约束?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-04 08:33:04

这是因为在用ENGINE=MyISAM创建的表上,MySQL不支持外键约束。您需要创建(两者都有!)带有ENGINE=InnoDB的表格。为此,您可以调整my.cnf,并添加一个默认值,或者在JDBC URL中使用一个特殊变量:

代码语言:javascript
复制
jdbc:mysql://localhost/dbname?characterEncoding=utf8&sessionVariables=storage_engine=InnoDB
票数 14
EN

Stack Overflow用户

发布于 2018-06-08 02:21:39

使用SpringBoot,您可以将application.properties设置为:

代码语言:javascript
复制
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect   

它应该工作得很好。

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

https://stackoverflow.com/questions/8720635

复制
相关文章

相似问题

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