-
-
Notifications
You must be signed in to change notification settings - Fork 102
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Problem
I have been getting the following error in our regression tests after recently upgrading a project to Quarkus 3.27. This is using version 3.1.3.Final of this project. Some lines have been redacted or renamed with a representative alternative.
org.hibernate.property.access.spi.PropertyAccessException: Error accessing field [com.example.EmbeddedKey com.example.AbstractRecord.key] by reflection for persistent property [com.example.ExampleRecord#key] : org.hibernate.reactive.session.impl.ReactiveStatelessSessionImpl@2002cffe
at org.hibernate.property.access.spi.GetterFieldImpl.get(GetterFieldImpl.java:55)
at org.hibernate.metamodel.mapping.internal.EmbeddedIdentifierMappingImpl.getIdentifier(EmbeddedIdentifierMappingImpl.java:90)
at org.hibernate.reactive.metamodel.mapping.internal.ReactiveEmbeddedIdentifierMappingImpl.getIdentifier(ReactiveEmbeddedIdentifierMappingImpl.java:92)
at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:4325)
at org.hibernate.mapping.Component$StandardGenerationContextLocator.locateGenerationContext(Component.java:766)
at org.hibernate.reactive.id.impl.ReactiveCompositeNestedGeneratedValueGenerator.generate(ReactiveCompositeNestedGeneratedValueGenerator.java:65)
at org.hibernate.reactive.id.impl.ReactiveGeneratorWrapper.generate(ReactiveGeneratorWrapper.java:51)
at org.hibernate.reactive.session.impl.ReactiveStatelessSessionImpl.generateIdForInsert(ReactiveStatelessSessionImpl.java:442)
at org.hibernate.reactive.session.impl.ReactiveStatelessSessionImpl.generatedIdBeforeInsert(ReactiveStatelessSessionImpl.java:421)
at org.hibernate.reactive.session.impl.ReactiveStatelessSessionImpl.reactiveInsert(ReactiveStatelessSessionImpl.java:356)
at org.hibernate.reactive.session.impl.ReactiveStatelessSessionImpl.reactiveInsert(ReactiveStatelessSessionImpl.java:297)
at org.hibernate.reactive.util.impl.CompletionStages.lambda$loop$3(CompletionStages.java:195)
at org.hibernate.reactive.util.impl.CompletionStages.lambda$loop$8(CompletionStages.java:483)
at org.hibernate.reactive.util.impl.CompletionStages$ArrayLoop.next(CompletionStages.java:557)
at org.hibernate.reactive.util.async.impl.AsyncTrampoline.lambda$asyncWhile$1(AsyncTrampoline.java:215)
at org.hibernate.reactive.util.async.impl.AsyncTrampoline$TrampolineInternal.unroll(AsyncTrampoline.java:121)
at org.hibernate.reactive.util.async.impl.AsyncTrampoline$TrampolineInternal.trampoline(AsyncTrampoline.java:102)
at org.hibernate.reactive.util.async.impl.AsyncTrampoline.asyncWhile(AsyncTrampoline.java:197)
at org.hibernate.reactive.util.async.impl.AsyncTrampoline.asyncWhile(AsyncTrampoline.java:215)
at org.hibernate.reactive.util.impl.CompletionStages.loop(CompletionStages.java:484)
at org.hibernate.reactive.util.impl.CompletionStages.loop(CompletionStages.java:455)
at org.hibernate.reactive.util.impl.CompletionStages.loop(CompletionStages.java:195)
at org.hibernate.reactive.session.impl.ReactiveStatelessSessionImpl.reactiveInsertAll(ReactiveStatelessSessionImpl.java:703)
at org.hibernate.reactive.mutiny.impl.MutinyStatelessSessionImpl.lambda$insertAll$5(MutinyStatelessSessionImpl.java:180)
<!-- Omitted the long async/Mutiny chain -->
Caused by: java.lang.IllegalArgumentException: Can not get com.example.EmbeddedKey field com.example.AbstractRecord.key on org.hibernate.reactive.session.impl.ReactiveStatelessSessionImpl
at java.base/java.lang.reflect.Field.get(Field.java:444)
at org.hibernate.property.access.spi.GetterFieldImpl.get(GetterFieldImpl.java:51)
... 114 more
Analysis
After stepping through with my debugger, I've narrowed it down to this line in ReactiveStatelessSessionImpl. The session implementation itself is being passed in as the entity with the actual entity being discarded. This inevitably fails when it starts trying to lookup field values. Looking at main, this appears to still be the case.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working