【问题标题】:Override Ebean naming convention覆盖 Ebean 命名约定
【发布时间】:2012-07-20 17:50:33
【问题描述】:

在 Play 2.0.2 中,我尝试使用 ebean 作为 ORM 并从 play-1.2.4 迁移我现有的模型类。 我在模型类中的所有 camelCase 字段都被映射到数据库中的下划线列,这会产生问题,因为数据库中的列不使用下划线。

我一直在查看 ebean API 文档:http://www.avaje.org/static/javadoc/pub/com/avaje/ebean/config/UnderscoreNamingConvention.html

如果未指定下划线命名约定,则默认为下划线命名约定,这似乎是在 Play 中的 EbeanPlugin 中发生的。 有没有办法可以覆盖这个默认设置(在 Play 中)?

我不想必须用 @Column 注释我所有的 camelCase 字段来解决这个问题。

TIA。

【问题讨论】:

  • 只是建议:手动更改现有数据库的结构可能会更快?坚持当前的惯例总是比为它们寻找解决方法更好。
  • 数据库更新,不是我的选择。数据库不能单独从游戏中访问。目前的约定?

标签: playframework-2.0 ebean


【解决方案1】:

老问题,但由于我刚刚找到答案,所以我想分享一下。

在 conf 目录中,创建一个名为“ebean.properties”的文件。在那个文件中,放...

ebean.namingconvention=com.avaje.ebean.config.MatchingNamingConvention

您可以在那里设置许多配置选项。

查看第 1405 行:http://grepcode.com/file/repo1.maven.org/maven2/org.avaje/ebean/2.7.2/com/avaje/ebean/config/ServerConfig.java

【讨论】:

  • 这适用于 play 2.0.X 吗?在查看 play ebean 插件初始化代码后,它似乎忽略了任何 conf 文件。虽然应该试一试并更新。
  • ebean 代码本身看起来。它只是试图打开“ebean.properties”,所以在 Heroku 上我不得不将文件放在应用程序根目录中,而不是 conf 目录中。不过,它有效。我使用的是 play 2.1.1,但我认为 play 2.0.x 已经足够相似了。
【解决方案2】:

我认为 Ebean 支持这个,但我不确定 Play Framework 是否很好地支持这个,看看他们的 Google Group,当你有答案时更新你的问题,因为这是一个有趣的问题,我认为:-)。

但是,也许在application.conf中设置如下配置:

ebean.namingConvention.sequenceFormat={table}{column}seq

【讨论】:

  • 这对我不起作用。它编译失败,抱怨寻找 OBJECT 而不是 LIST。我尝试将值放在双引号中,但仍然出现相同的错误。不过 Kevin Galligan 建议的 ebean.properties 方法确实有效。
猜你喜欢
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
  • 2017-05-12
  • 2017-08-07
  • 2015-11-23
相关资源
最近更新 更多