到目前为止,我们一直在使用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,但是没有成功。
发布于 2015-06-26 20:18:43
不管怎样,我让它工作了,如果任何人有同样的问题,下面的方法可以解决它:
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);
}}
发布于 2018-03-19 05:15:56
将Rob的评论扩展为一个真实的答案:
Putting ebean.databasePlatformName=postgres8
在conf/ebean.properties中,将强制Play 2.3默认使用PostgreSQL序列来生成in。
https://stackoverflow.com/questions/31071253
复制相似问题