有没有办法让Play框架和JPA在列名中使用下划线?

时间:2011-04-26 21:28:27

标签: java hibernate jpa playframework

我正在努力建立一个游戏!应用程序针对现有数据库运行,其中所有列都具有下划线以分隔单词。这意味着我必须在每个字段上添加@Column注释以指定不同的名称。反正有没有玩!默认情况下使用下划线?

3 个答案:

答案 0 :(得分:14)

如果Play使用Hibernate,正如其他答案所示,您必须implement a custom NamingStrategy

以下是一个示例NamingStrategy,使用Guava将所有列名称从较低的camel转换为带有下划线的小写:

public class CustomNamingStrategy extends ImprovedNamingStrategy {

    private static final long serialVersionUID = -306957679456120781L;

    @Override
    public String columnName(final String columnName) {
        return CaseFormat.LOWER_CAMEL
                         .to(CaseFormat.LOWER_UNDERSCORE, columnName);
    }
}

像这样配置:

  

添加以下行   application.conf配置   NamingStrategy

     

hibernate.ejb.naming_strategy=<your naming strategy classname>

<强>参考:

答案 1 :(得分:1)

给出的解决方案效果很好,但正如评论中所述,ImprovedNamingStrategy这样做,因此不需要使用Guava。

  

改进的命名策略,更喜欢嵌入式下划线混合   案件名称

您只需在hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy中添加application.conf(在Play中测试!框架1.2.5)

答案 2 :(得分:0)

好吧,如果我正确阅读了doc,那么play框架就是使用Hibernate作为JPA实现。 AFAIK,无法更改Hibernate的标准命名,因此您必须在映射XML文件中添加注释或提供列名。

相关问题