Eri*_*rik 6 mysql hibernate jpa java-ee
我面临的问题是,hibernate生成的模式名称(例如表名称)在Windows和Linux之间有所不同.在Windows上,所有表名都是小例子,例如account,在Linux下创建的表名是骆驼案例,例如Account.
在两个系统上,我使用相同版本的MySQL 5和以下的hibernate配置:
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
<prop key="hibernate.jdbc.batch_size">0</prop>
<prop key="hibernate.bytecode.provider">cglib</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?基本上我可以忍受这个奇怪的问题,但有时它很烦人我不能只是将我的表从我的Windows IDE导出到我的linux环境.
您可能希望将属性设置hibernate.ejb.naming_strategy为org.hibernate.cfg.ImprovedNamingStrategy或实现自己的命名策略类.
不幸的是,这是mysql在区分大小写的文件系统上工作的方式(我在Mac上遇到了与"insenstive"文件系统相同的问题).要解决此问题,您需要自己提供表的名称.
例如
@Entity
@Table(name="user")
public class User implements Serializable {
...
}
Run Code Online (Sandbox Code Playgroud)
表名应全部为小写!通过这种方式,您可以确保MySQL将正确命名该表.
Jut非常清楚,问题不是休眠,而是mysql如何处理表名.