一尘不染

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

hibernate

在这里记录此信息是因为我只花了一个小时试图解决这个问题。

我有一个实体Foo,拥有:

@ManyToOne(optional = false)
@JoinColumn(name = "barId")
private Bar bar;

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


阅读 355

收藏
2020-06-20

共1个答案

一尘不染

这是因为MySQL在使用ENGINE = MyISAM创建的表上不支持外键约束。您需要使用ENGINE =
InnoDB创建(均为!)表。您可以通过调整my.cnf,添加默认值或在JDBC URL中使用特殊变量来执行此操作:

jdbc:mysql://localhost/dbname?characterEncoding=utf8&sessionVariables=storage_engine=InnoDB
2020-06-20