问题
重启spring boot,把找不到外键。
Attempt to resolve foreign key metadata from JDBC metadata failed to find column mappings for foreign key named [FKbenmnokfsg4w0dajvjk9pvnrr]
排查过程
通过工具,无意间看到一个叫FKbenmnokfsg4w0dajvjk9pvnrr的索引,这个名字和控制台报错很类似,然后,沿着这个索引去看对应的表和对应的字段,然后,跑到Java里面看该表的映射属性。
原因
最开始该属性被映射成外键的,后面再Java中配置去掉了外键,改成了String类型;但是,这个改变对于数据库来说没有变化。数据库还是把该属性对应的字段当做外键处理,所以重启spring boot的时候就报了如上错误。
解决
在数据库中,移除FKbenmnokfsg4w0dajvjk9pvnrr该外键,以及相关索引即可。
总结
在Java代码中调整Hibernate的映射时候,需要看一看数据库中有没有生效。网上的另外解决办法是说升级Spring boot中的Hibernate,通过配置pom.xml
- <properties>
- ...
- <hibernate.version>5.3.7.Final</hibernate.version>
- ...
- <、properties>
这种方法并没有解决上述问题。