mysql 5.6.16的hibernate实体存在奇怪的问题

mysql 5.6.16的hibernate实体存在奇怪的问题,mysql,hibernate,Mysql,Hibernate,我在hibernate实体和mysql 5.6.16的组合中遇到了一个奇怪的问题。然而,我用试错法找到了我的解决方案,但没有得到背后的逻辑。我在谷歌上也没有得到多少帮助 我用mysql 5.6.22开发了一个hibernate应用程序,并在我的windows系统中进行了测试,效果良好 当我将相同的应用程序部署到具有mysql 5.6.16的redhat linux服务器时,即使数据库中存在用户表,也会出现以下错误 2016-02-28 00:52:45 WARN SqlExceptionHel

我在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
2016-02-28 00:52:45警告SqlExceptionHelper:143-SQL错误:1146,SQLState:42S02
2016-02-28 00:52:45错误SqlExceptionHelper:144-表'.User'不存在
我找到的抱怨表单my redhat服务器是因为我的Eclipse生成的hibernate实体没有在表名为“user”时添加@Table(“user”),而是在实体中添加@Table(“user\u address”),如果表名有下划线(\ux)

还有一种可能性是redhat服务器上的mysql不支持不区分大小写的表名,即如果在实体中未显式添加@table(“User”),则hibernate会将查询生成为“select*from User”

我的问题是相同的代码[没有添加@Table(“user”)]在我的windows系统中是如何工作的


这背后有什么逻辑?

正如我在问题陈述中所怀疑的,这个问题主要是因为mysql不支持redhat服务器中的大小写不敏感,但windows支持。在linux中,此问题可以通过以下任一方式修复

  • 在my.cnf文件的[mysqld]下添加小写\u table\u names=1,并重新启动mysql服务器
  • 在hibernate实体类中添加@Table(“用户”)

  • 表名可以区分大小写,具体取决于基础文件系统<代码>用户!=用户