Используя java-paly-ebean-exmaple 2.7, я преобразовываю ответ html-представления в ответ json rest для действия со списком, и получаю следующую ошибку:
play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[CompletionException: java.lang.RuntimeException: java.lang.IllegalArgumentException: Direct self-reference leading to cycle (through reference chain: io.ebeaninternal.server.query.LimitOffsetPagedList["futureCount"]->io.ebeaninternal.server.query.QueryFutureRowCount["query"]->io.ebeaninternal.server.querydefn.DefaultOrmQuery["beanDescriptor"]->io.ebeaninternal.server.deploy.BeanDescriptor["idProperty"]->io.ebeaninternal.server.deploy.BeanProperty["property"])]]
at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:323)
at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:243)
at play.core.server.AkkaHttpServer$$anonfun$1.applyOrElse(AkkaHttpServer.scala:382)
at play.core.server.AkkaHttpServer$$anonfun$1.applyOrElse(AkkaHttpServer.scala:380)
at scala.concurrent.Future.$anonfun$recoverWith$1(Future.scala:417)
at scala.concurrent.impl.Promise.$anonfun$transformWith$1(Promise.scala:41)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:64)
at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)
at akka.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:91)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
Это действие списка для моего класса контроллера:
public CompletionStage<Result> list(Http.Request request, int page, int pageSize, String sortBy, String order, String filter) {
log.info("---------> Home List method ----> ");
//return CompletableFuture.completedFuture(ok("value is Not some Data ..."));
// Run a db operation in another thread (using DatabaseExecutionContext)
return homeRepository.page(page, pageSize, sortBy, order, filter).thenApplyAsync(list -> {
// This is the HTTP rendering thread contex
return ok(Json.toJson(list));
}, ec.current());
}
Это метод страницы для моего класса репозитория:
public CompletionStage<PagedList<Home>> page(int page, int pageSize, String sortBy, String order, String filter) {
log.info("---------> page method -->" + page + "<--->" + pageSize + "<--->" + sortBy + "<--->" + order + "<--->" + filter );
CompletionStage<PagedList<Home>> homes = supplyAsync(() ->
ebeanServer.find(Home.class).where()
.ilike("message", "%" + filter + "%")
.orderBy(sortBy + " " + order)
.setFirstRow(page * pageSize)
.setMaxRows(pageSize)
.findPagedList(), executionContext);
return homes;
}
когда я заменяю ok (Json.toJson (список)) на ok («все хорошо») в моем контроллере, я получаю ответ без ошибок.
это был оригинальный код списка контроллеров, который я преобразовал в ответ json:
public CompletionStage<Result> list(Http.Request request, int page, String sortBy, String order, String filter) {
// Run a db operation in another thread (using DatabaseExecutionContext)
return computerRepository.page(page, 10, sortBy, order, filter).thenApplyAsync(list -> {
// This is the HTTP rendering thread context
return ok(views.html.list.render(list, sortBy, order, filter, request, messagesApi.preferred(request)));
}, httpExecutionContext.current());
}
не могу понять, в чем проблема?
Спасибо