Open KimDev88 opened 1 year ago
@blafond Could you check this, please?
yes
@KimDev88 could you share your entity classes or point to test project that replicates this error?
@KimDev88 is this still an issue with Hibernate Reactive 2.2.0.Final?
@DavideD Yes... It's same.
implementation 'org.hibernate.orm:hibernate-core:6.4.0.Final'
implementation 'org.hibernate.reactive:hibernate-reactive-core:2.2.0.Final'
implementation 'io.vertx:vertx-mysql-client:4.5.0'
Caused by: org.hibernate.HibernateException: java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "org.hibernate.sql.results.graph.DomainResult.createResultAssembler(org.hibernate.sql.results.graph.FetchParentAccess, org.hibernate.sql.results.graph.AssemblerCreationState)" because the return value of "java.util.List.get(int)" is null
at org.hibernate.reactive.session.impl.ReactiveExceptionConverter.convert(ReactiveExceptionConverter.java:28)
at org.hibernate.reactive.session.impl.ReactiveSessionImpl.lambda$firePersist$11(ReactiveSessionImpl.java:736)
at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934)
... 100 more
Caused by: java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "org.hibernate.sql.results.graph.DomainResult.createResultAssembler(org.hibernate.sql.results.graph.FetchParentAccess, org.hibernate.sql.results.graph.AssemblerCreationState)" because the return value of "java.util.List.get(int)" is null
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1194)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:144)
at org.hibernate.reactive.sql.exec.internal.StandardReactiveSelectExecutor.doExecuteQuery(StandardReactiveSelectExecutor.java:148)
at org.hibernate.reactive.sql.exec.internal.StandardReactiveSelectExecutor.executeQuery(StandardReactiveSelectExecutor.java:118)
at org.hibernate.reactive.sql.exec.internal.StandardReactiveSelectExecutor.list(StandardReactiveSelectExecutor.java:86)
at org.hibernate.reactive.sql.exec.internal.StandardReactiveSelectExecutor.list(StandardReactiveSelectExecutor.java:76)
at org.hibernate.reactive.loader.ast.internal.DatabaseSnapshotExecutor.loadDatabaseSnapshot(DatabaseSnapshotExecutor.java:184)
at org.hibernate.reactive.loader.ast.internal.ReactiveSingleIdEntityLoaderStandardImpl.reactiveLoadDatabaseSnapshot(ReactiveSingleIdEntityLoaderStandardImpl.java:47)
at org.hibernate.reactive.persister.entity.impl.ReactiveAbstractEntityPersister.reactiveGetDatabaseSnapshot(ReactiveAbstractEntityPersister.java:262)
at org.hibernate.reactive.engine.impl.ReactivePersistenceContextAdapter.reactiveGetDatabaseSnapshot(ReactivePersistenceContextAdapter.java:90)
at org.hibernate.reactive.engine.impl.ForeignKeys.isTransient(ForeignKeys.java:329)
at org.hibernate.reactive.engine.impl.ForeignKeys$Nullifier.isNullifiable(ForeignKeys.java:254)
at org.hibernate.reactive.engine.impl.ForeignKeys$Nullifier.nullifyTransientReferences(ForeignKeys.java:135)
at org.hibernate.reactive.engine.impl.ForeignKeys$Nullifier.lambda$nullifyTransientReferences$0(ForeignKeys.java:89)
at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:144)
at org.hibernate.reactive.engine.impl.ForeignKeys$Nullifier.nullifyTransientReferences(ForeignKeys.java:89)
at org.hibernate.reactive.engine.impl.ReactiveEntityInsertAction.reactiveNullifyTransientReferencesIfNotAlready(ReactiveEntityInsertAction.java:64)
at org.hibernate.reactive.engine.impl.ReactiveEntityInsertAction.reactiveMakeEntityManaged(ReactiveEntityInsertAction.java:81)
at org.hibernate.reactive.engine.ReactiveActionQueue.lambda$addResolvedEntityInsertAction$6(ReactiveActionQueue.java:292)
at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:144)
at org.hibernate.reactive.engine.ReactiveActionQueue.addResolvedEntityInsertAction(ReactiveActionQueue.java:290)
at org.hibernate.reactive.engine.ReactiveActionQueue.lambda$addInsertAction$2(ReactiveActionQueue.java:258)
at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:144)
at org.hibernate.reactive.engine.ReactiveActionQueue.addInsertAction(ReactiveActionQueue.java:255)
at org.hibernate.reactive.engine.ReactiveActionQueue.addAction(ReactiveActionQueue.java:241)
at org.hibernate.reactive.event.impl.AbstractReactiveSaveEventListener.addInsertAction(AbstractReactiveSaveEventListener.java:374)
at org.hibernate.reactive.event.impl.AbstractReactiveSaveEventListener.lambda$reactivePerformSaveOrReplicate$5(AbstractReactiveSaveEventListener.java:292)
at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:144)
at org.hibernate.reactive.event.impl.AbstractReactiveSaveEventListener.reactivePerformSaveOrReplicate(AbstractReactiveSaveEventListener.java:292)
at org.hibernate.reactive.event.impl.AbstractReactiveSaveEventListener.lambda$reactivePerformSave$2(AbstractReactiveSaveEventListener.java:204)
at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:144)
at org.hibernate.reactive.event.impl.AbstractReactiveSaveEventListener.reactivePerformSave(AbstractReactiveSaveEventListener.java:204)
at org.hibernate.reactive.event.impl.AbstractReactiveSaveEventListener.reactiveSaveWithGeneratedId(AbstractReactiveSaveEventListener.java:144)
at org.hibernate.reactive.event.impl.DefaultReactivePersistEventListener.entityIsTransient(DefaultReactivePersistEventListener.java:189)
at org.hibernate.reactive.event.impl.DefaultReactivePersistEventListener.persist(DefaultReactivePersistEventListener.java:109)
at org.hibernate.reactive.event.impl.DefaultReactivePersistEventListener.reactiveOnPersist(DefaultReactivePersistEventListener.java:92)
at org.hibernate.reactive.event.impl.DefaultReactivePersistEventListener.reactiveOnPersist(DefaultReactivePersistEventListener.java:64)
at org.hibernate.event.service.internal.EventListenerGroupImpl.lambda$fireEventOnEachListener$0(EventListenerGroupImpl.java:153)
at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:144)
at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:153)
at org.hibernate.reactive.session.impl.ReactiveSessionImpl.firePersist(ReactiveSessionImpl.java:728)
... 96 more
Caused by: java.lang.NullPointerException: Cannot invoke "org.hibernate.sql.results.graph.DomainResult.createResultAssembler(org.hibernate.sql.results.graph.FetchParentAccess, org.hibernate.sql.results.graph.AssemblerCreationState)" because the return value of "java.util.List.get(int)" is null
at org.hibernate.sql.results.jdbc.internal.StandardJdbcValuesMapping.resolveAssemblers(StandardJdbcValuesMapping.java:53)
at org.hibernate.reactive.sql.results.internal.ReactiveResultsHelper.createRowReader(ReactiveResultsHelper.java:44)
at org.hibernate.reactive.sql.exec.internal.StandardReactiveSelectExecutor.lambda$doExecuteQuery$4(StandardReactiveSelectExecutor.java:182)
at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
... 149 more
@DavideD But it doesn't work when I change to the previous version. I'll test it in more detail and talk to you again.
Sure, thanks.
By the way @Transactional
does not affect Hibernate Reactive, it would be better to remove the annotation
You also don't need to use .join()
, there are examples on the Mutiny documentation on how to covert fron Uni
to Mono
: https://smallrye.io/smallrye-mutiny/2.5.1/guides/converters/#converting-a-multi-into-a-flux-or-mono
This source is working.
but upgrade hibernate-core to 2.0.5, this source is not working.
-- service class source --
-- working -- hibernate-core-6.2.5.Final.jar hibernate-reactive-core-2.0.4.Final.jar vertx-mysql-client-4.4.4.jar
-- not working -- hibernate-core-6.2.8.Final.jar hibernate-reactive-core-2.0.5.Final.jar vertx-sql-client-4.4.5.jar