public class UserController extends Controller {
@Inject
private UserRepository repository;
@Inject
private HttpExecutionContext executionContext;
@Transactional
public CompletionStage<Result> getUsers() {
return CompletableFuture.supplyAsync(() -> repository.getUsers(), executionContext.current())
.thenApplyAsync(Json::toJson)
.thenApplyAsync(Results::ok);
}
}
public class UserRepository {
@Inject
private JPAApi jpaApi;
public List<User> getUsers(){
EntityManager entityManager = jpaApi.em();
// Logic
return query.getResultList();
}
}
play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[CompletionException: java.lang.IllegalStateException: Session/EntityManager is closed]] at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:280) at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:206) at play.api.GlobalSettings$class.onError(GlobalSettings.scala:160) at play.api.DefaultGlobal$.onError(GlobalSettings.scala:188) at play.api.http.GlobalSettingsHttpErrorHandler.onServerError(HttpErrorHandler.scala:98) at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:100) at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:99) at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:344) at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:343) at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)public class AnnyController extends Controller{
private JPAApi JPAapi;
@Inject
public AnnyControoler(JPAApi api) {
arquivo = new Arquivo();
this.JPAapi = api;
}
}
@Inject
private JPAApi jpaApi;
from your UserRepository bean
[CompletionException: org.hibernate.SessionException: Session is closed!]