【发布时间】:2016-02-29 17:57:44
【问题描述】:
我遇到了一个关于休眠实体和 mysql 5.6.16 组合的奇怪问题。但是,我通过反复试验方法找到了我的解决方案,但没有得到它背后的逻辑。我在 Google 上也没有得到太多帮助。
我已经使用 mysql 5.6.22 开发了一个休眠应用程序,并在我的 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服务器的抱怨是因为如果表名是“user”,我的eclipse生成的hibernate实体没有添加@Table(“user”)但是添加了@Table(“user_address”)如果表名带有下划线 (_),则在实体中。
还有一种可能是redhat服务器上的mysql不支持不区分大小写的表名,即如果@Table("user")没有显式添加到实体中,hibernate会生成查询为“select * from User”
我的问题是相同的代码 [不添加 @Table("user")] 如何在我的 Windows 系统中运行?
这背后有什么逻辑吗?
【问题讨论】:
-
表名可以区分大小写,具体取决于底层文件系统。
User != user