直到现在我们一直在使用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,但没有运气。
答案 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。