Playframework 使用ebean复制对象并获取新对象的id

Playframework 使用ebean复制对象并获取新对象的id,playframework,playframework-2.0,ebean,Playframework,Playframework 2.0,Ebean,我正在对DB2数据库使用Play2.2.3和Java 我的目标是复制一个对象,将其保存到数据库中,然后获取新对象的id,以便在重定向中使用它 代码如下所示: Teilnehmer teilnehmer = Teilnehmer.getTeilnehmer(id); Teilnehmer copy = (Teilnehmer) teilnehmer._ebean_createCopy(); copy.id = null; copy.save(); Ebean.refresh(); retur

我正在对DB2数据库使用Play2.2.3和Java

我的目标是复制一个对象,将其保存到数据库中,然后获取新对象的id,以便在重定向中使用它

代码如下所示:

Teilnehmer teilnehmer = Teilnehmer.getTeilnehmer(id);
Teilnehmer copy = (Teilnehmer) teilnehmer._ebean_createCopy();
copy.id = null;

copy.save();

Ebean.refresh();

return updateTeilnehmerForm(copy.id);
copy
-对象很好,完全符合我的需要,并正确地保存到数据库中。问题是我无法调用
Ebean.refresh()
,因为copy对象的
copy.id
仍然是
null
,这与return语句中的方法调用相同

错误消息(来自
Ebean.refresh()
):

我尝试对Id使用显式getter和setter,但此时似乎没有任何效果。我还试图从数据库序列中获取下一个id,但只返回了
null
。Ebean似乎使用的是一个通用平台,而不是可能成为问题的特定DB2Platform

当我不发送到
updatetelnehmerform
并重新加载概览页面(新的数据库条目应该显示在该页面上)时,一切正常,模板似乎能够读取id


我希望你们有个主意,因为我不知所措。

我终于想出了办法。问题在于Ebean版本3.2.2中,该版本显然包含在播放2.2.3中。 经过一些反编译后,我发现
DatabasePlatformFactory
没有DB2数据库的“案例”。因此,每次都使用通用平台。 在对Github进行了一些研究之后,我发现这在以后的版本中是固定的。通过将这一行添加到
build.sbt
文件,我将Ebean依赖项更新为3.2.5:

dependencyOverrides += "org.avaje.ebeanorm" % "avaje-ebeanorm" % "3.2.5"
在那之后我甚至不需要ebean.properties文件

dependencyOverrides += "org.avaje.ebeanorm" % "avaje-ebeanorm" % "3.2.5"