在这里记录此信息是因为我只花了一个小时试图解决这个问题。
我有一个实体Foo,拥有:
@ManyToOne(optional = false) @JoinColumn(name = "barId") private Bar bar;
Hibernate为什么不在foo.bar-> bar.id上创建外键约束?
这是因为MySQL在使用ENGINE = MyISAM创建的表上不支持外键约束。您需要使用ENGINE = InnoDB创建(均为!)表。您可以通过调整my.cnf,添加默认值或在JDBC URL中使用特殊变量来执行此操作:
my.cnf
jdbc:mysql://localhost/dbname?characterEncoding=utf8&sessionVariables=storage_engine=InnoDB