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