【问题标题】:Force lowercase table names in Play Framework在 Play Framework 中强制使用小写表名
【发布时间】:2012-04-25 22:14:46
【问题描述】:

在这个项目中,我在 Windows 上开发并在 Linux 上部署,并使用 mysql 作为数据库。

由于文件系统的性质,表名(我想还有更多)在 Windows 上不区分大小写,在 *nix 上不区分大小写 [Ref]

问题是,默认情况下,play/jpa 使用与表的 java 模型类相同的名称(因此它是大写的,例如 UserProfile)。当我转储我的 windows mysql 数据库时,它会转储小写的表名。

这意味着由于区分大小写,我无法在 Linux 中导入它们。

有没有办法告诉 Play / JPA 始终为模型使用小写名称? 或者我必须在任何单个模型上设置@Table(name="userprofile") 注释吗?

【问题讨论】:

    标签: mysql jpa playframework


    【解决方案1】:

    您需要为休眠使用不同的命名策略。有一个改进的 NS 可用于休眠

    http://docs.jboss.org/hibernate/orm/3.6/javadocs/org/hibernate/cfg/ImprovedNamingStrategy.html

    您可以简单地将这一行添加到 application.conf

    hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
    

    另请参阅this 帖子和this SO 问题

    【讨论】:

    • 感谢@mericano1;从以前删除的答案(为什么?!)和这些票:#616#769 看起来这在 Play 1.2.* 上不起作用,我目前在 1.2.4 上(我将移至 1.3 作为刚出来的时候)。在任何情况下我都会自己测试,但是..您是否自己尝试过,以便确认它是否像宣传的那样工作?
    • 我使用了其他 hibernate.ebj.* 属性,它们确实工作正常。具体来说,我正在使用 ejb 事件。看这个audit log project,底部有一个用法部分,就是我专门有的
    猜你喜欢
    • 1970-01-01
    • 2015-01-24
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 2014-01-21
    • 2012-03-15
    • 1970-01-01
    相关资源
    最近更新 更多