Play Framework 2.3.4 Java Ebean执行异常[[IllegalStateException:Transaction is Inactive]]

时间:2015-03-17 08:02:59

标签: java playframework ebean

我使用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]

感谢。

1 个答案:

答案 0 :(得分:0)

提供交易范围

TxScope txScope = TxScope.requiresNew();

Ebean.execute(txScope, new TxRunnable() {  
  public void run() {  

    User user = new User();
    user.id = 1;
    user.save();
  }  
});