Play Framework 2.4 Ebean Id Generation

m14*_*416 3 playframework ebean playframework-2.0

到目前为止我们一直在使用Play 2.3.9,我们现在正在迁移到Play 2.4.1当我使用旧版本的Play保存实体时,但是使用新版本时,不会生成Id.我从头开始设置一个新项目并试图实现它的工作原理,自动生成的数据库有一个自动递增的Id字段,而旧项目有一个使用序列的数据库.我一直在尝试配置play/ebean来使用序列,但到目前为止还没有成功.

我在这里看了一下http://www.avaje.org/topic-97.html然后尝试了一下,但它仍然没有用.任何建议,将不胜感激.

我的配置如下所示:

ebean.default.identityGeneration=sequence
ebean.default.supportsGetGeneratedKeys=false
ebean.default.supportsSequences=true
ebean.default.debug.sql=true
Run Code Online (Sandbox Code Playgroud)

我也尝试过

ebean.default.identityGeneration=generator
Run Code Online (Sandbox Code Playgroud)

我把这些行直接放在application.conf中我也用ServerConfigStartup方式配置了ebean,但没有运气.

m14*_*416 6

无论如何,我让它工作,如果有人有同样的问题,以下修复它:

public class MyServerConfigStartup implements ServerConfigStartup {
@Override
public void onStart(ServerConfig serverConfig) {
    PostgresPlatform postgresPlatform = new PostgresPlatform();
    DbIdentity dbIdentity = postgresPlatform.getDbIdentity();
    dbIdentity.setSupportsGetGeneratedKeys(false);
    dbIdentity.setSupportsSequence(true);
    dbIdentity.setIdType(IdType.GENERATOR);
    serverConfig.setDatabasePlatform(postgresPlatform);
}
Run Code Online (Sandbox Code Playgroud)

}

  • 参考https://github.com/ebean-orm/avaje-ebeanorm/issues/97在Postgres上使用Ebean 4.0.5版SERIAL成为默认的ID机制.上面的解决方案很好 - 或者您可以使用旧的"平台":ebean.databasePlatformName = postgres8 (2认同)