Skip to content

Error accessing field by reflection for persistent property #2666

@djnalluri

Description

@djnalluri

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

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions