Geo*_*old 9 mysql hibernate jpa
在这里记录这个因为我只是浪费了一个小时试图解决这个问题.
我有一个实体Foo:
@ManyToOne(optional = false)
@JoinColumn(name = "barId")
private Bar bar;
Run Code Online (Sandbox Code Playgroud)
为什么Hibernate不在foo.bar - > bar.id上创建外键约束?
kon*_*nqi 16
正如这里建议的Hibernate:创建Mysql InnoDB表而不是MyISAM你也可以改变Hibernate方言来使用
org.hibernate.dialect.MySQL5InnoDBDialect
Run Code Online (Sandbox Code Playgroud)
这种侵入性较小.
只想将其作为替代解决方案添加.
Geo*_*old 12
这是因为MySQL不支持使用ENGINE = MyISAM创建的表的外键约束.您需要使用ENGINE = InnoDB创建(两个!)表.您可以通过调整my.cnf,添加默认值或在JDBC URL中使用特殊变量来实现:
jdbc:mysql://localhost/dbname?characterEncoding=utf8&sessionVariables=storage_engine=InnoDB
Run Code Online (Sandbox Code Playgroud)
小智 9
使用SpringBoot,您可以设置application.properties为:
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
Run Code Online (Sandbox Code Playgroud)
它应该可以正常工作。
| 归档时间: |
|
| 查看次数: |
6292 次 |
| 最近记录: |