我遇到了一个与hibernate实体和mysql 5.6.16组合的奇怪问题。然而,我通过试错法找到了我的解决方案,但没有得到它背后的逻辑。我也没有在谷歌上获得太多帮助。
我用mysql 5.6.22开发了一个hibernate应用程序,并在我的windows系统中进行了相同的测试并且工作正常。
当我将相同的应用程序部署到具有mysql 5.6.16的redhat linux服务器时,即使数据库中存在用户表,也会出现以下错误
2016-02-28 00:52:45 WARN SqlExceptionHelper:143 - SQL Error: 1146, SQLState: 42S02
2016-02-28 00:52:45 ERROR SqlExceptionHelper:144 - Table '<dbname>.User' doesn't exist
我发现的redhat服务器的抱怨形式是因为我的日食生成的hibernate实体没有添加@Table(&#34; user&#34;)如果表名是&#34; user&#34 ;但如果表名具有下划线(_),则在实体中添加@Table(&#34; user_address&#34;)。
另一种可能性是redhat服务器上的mysql不支持不区分大小写的表名,即hibernate生成查询为&#34; select * from User&#34;如果@Table(&#34; user&#34;)未在实体中明确添加
我的问题是如何在我的Windows系统中使用相同的代码[没有添加@Table(&#34; user&#34;)]?
这背后的任何逻辑?
答案 0 :(得分:0)
正如我在我的问题陈述中所怀疑的那样,这个问题主要是因为mysql不支持redhat服务器中的大小写不敏感但是windows确实如此。这个问题可以通过以下方式在linux中修复。
OR