Play Framework 2.4 Ebean Id Generation

时间:2015-06-26 10:48:28

标签: playframework playframework-2.0 ebean

直到现在我们一直在使用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

我也试过

ebean.default.identityGeneration=generator

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

2 个答案:

答案 0 :(得分: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);
}

}

答案 1 :(得分:0)

将Rob的评论扩展为真实答案:

ebean.databasePlatformName=postgres8

conf/ebean.properties中的

将强制Play 2.3默认使用PostgreSQL序列生成ID。