我使用Play Framework 2.3.4,Java8,Ebean。 Ebean事务代码不起作用。 请你的帮助。
Java代码
Ebean.execute(new TxRunnable() {
public void run() {
User user = new User();
user.id = 1;
user.save();
}
});
服务器错误日志
play.api.Application$$anon$1: Execution exception[[IllegalStateException: Transaction is Inactive]]
at play.api.Application$class.handleError(Application.scala:296) ~[com.typesafe.play.play_2.11-2.3.4.jar:2.3.4]
at play.api.DefaultApplication.handleError(Application.scala:402) [com.typesafe.play.play_2.11-2.3.4.jar:2.3.4]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [com.typesafe.play.play_2.11-2.3.4.jar:2.3.4]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [com.typesafe.play.play_2.11-2.3.4.jar:2.3.4]
at scala.Option.map(Option.scala:145) [org.scala-lang.scala-library-2.11.1.jar:na]
Caused by: java.lang.IllegalStateException: Transaction is Inactive
at com.avaje.ebeaninternal.server.transaction.JdbcTransaction.commit(JdbcTransaction.java:583) ~[org.avaje.ebeanorm.avaje-ebeanorm-3.3.4.jar:na]
at com.avaje.ebeaninternal.api.ScopeTrans.onFinally(ScopeTrans.java:101) ~[org.avaje.ebeanorm.avaje-ebeanorm-3.3.4.jar:na]
at com.avaje.ebeaninternal.server.core.DefaultServer.execute(DefaultServer.java:724) ~[org.avaje.ebeanorm.avaje-ebeanorm-3.3.4.jar:na]
at com.avaje.ebeaninternal.server.core.DefaultServer.execute(DefaultServer.java:709) ~[org.avaje.ebeanorm.avaje-ebeanorm-3.3.4.jar:na]
at com.avaje.ebean.Ebean.execute(Ebean.java:1264) ~[org.avaje.ebeanorm.avaje-ebeanorm-3.3.4.jar:na]
感谢。
答案 0 :(得分:0)
提供交易范围
TxScope txScope = TxScope.requiresNew();
Ebean.execute(txScope, new TxRunnable() {
public void run() {
User user = new User();
user.id = 1;
user.save();
}
});