Hibernate不会在不同的操作系统下加载某些表

时间:2012-01-05 07:27:06

标签: mysql windows linux hibernate

我正在使用Hibernate和mySQL。

我主要在windows上开发java应用程序。所有表都是用小写创建的。

当我在linux服务器上部署它时,我注意到这些表现在处于正确的大小(java命名约定)。这很好,但由于某种原因,我的oneToMany列表之一未加载。

除了 “from”+ class.getName()

之外,我没有使用任何其他查询

我尝试更改 my.conf 中的 * lower_case_table_names = 2 * ,以便在Windows中匹配,但这对我们没有帮助

还有其他想法吗?

<小时/> 实际上,这是愚蠢的。这是我在应用程序中导致问题的逻辑,我希望做一些部分提取。

1 个答案:

答案 0 :(得分:2)

您选择了错误的选项,手册中的引用:
 http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html

  

lower_case_table_names =
  0
  表和数据库名称使用CREATE TABLE或CREATE DATABASE语句中指定的lettercase存储在磁盘上。名称比较区分大小写。如果在具有不区分大小写的文件名(例如Windows或Mac OS X)的系统上运行MySQL,则不应将此变量设置为0。如果在不区分大小写的文件系统上使用--lower-case-table-names = 0强制此变量为0并使用不同的字母表访问MyISAM表名,则可能会导致索引损坏。

     

1
  表名以小写形式存储在磁盘上,名称比较不区分大小写。 MySQL在存储和查找时将所有表名转换为小写。此行为也适用于数据库名称和表别名。

     

2
  表和数据库名称使用CREATE TABLE或CREATE DATABASE语句中指定的字母大小存储在磁盘上,但MySQL在查找时将它们转换为小写。名称比较不区分大小写。 仅适用于不区分大小写的文件系统! InnoDB表名以小写形式存储,与lower_case_table_names = 1一样。

选项2永远不会在Linux上运行,因为该系统区分大小写 在Linux和所有其他系统上,您需要使用选项1.

然后你的案例敏感性问题就会结束。