之所以在这里记录下来,是因为我刚刚浪费了一个小时试图弄清楚这一点。
我有一个实体Foo:
@ManyToOne(optional = false)
@JoinColumn(name = "barId")
private Bar bar;
为什么Hibernate不在foo.bar -> bar.id上创建外键约束?
发布于 2012-01-04 08:33:04
这是因为在用ENGINE=MyISAM创建的表上,MySQL不支持外键约束。您需要创建(两者都有!)带有ENGINE=InnoDB的表格。为此,您可以调整my.cnf
,并添加一个默认值,或者在JDBC URL中使用一个特殊变量:
jdbc:mysql://localhost/dbname?characterEncoding=utf8&sessionVariables=storage_engine=InnoDB
发布于 2018-06-08 02:21:39
使用SpringBoot,您可以将application.properties
设置为:
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
它应该工作得很好。
https://stackoverflow.com/questions/8720635
复制相似问题