我正在尝试将quarkus-hibernate-reactive
扩展与扩展一起使用,quarkus-vertx
但在持久化数据时遇到问题。我的项目大致是这样的:
水果资源:
@Inject
EventBus eventBus;
@POST
public Uni<Response> create(Fruit fruit) {
if (fruit == null || fruit.getId() != null) {
throw new WebApplicationException("Id was invalidly set on request.", 422);
}
return eventBus.<Void>request("create-fruit", fruit)
.map(ignore -> Response.ok(fruit).status(201).build());
}
水果服务:
@Inject
FruitRepository fruitRepository;
@ConsumeEvent("create-fruit")
public Uni<Void> createFruit(final Fruit fruit) {
return fruitRepository.create(fruit);
}
水果库:
@Inject
Mutiny.Session mutinySession;
public Uni<Void> create(final Fruit fruit) {
return mutinySession
.persist(fruit)
.chain(mutinySession::flush);
}
我得到的例外是 a java.lang.IllegalStateException: Session/EntityManager is closed
,我假设它发生在flush()
. 我想我的会话会在某个地方关闭,但我不知道在哪里以及如何防止这种情况发生。
完整的例子可以在这里找到:https
FruitsEndpointTest
://github.com/bamling/quarkus-hibernate-reactive-test模拟行为!