[JIRA] (HHH-16254) Session load by pk returns proxy in association when using "batch fetch size", "cache", "fetch mode select", "single table inheritance"
by Marco Belladelli (JIRA)
Marco Belladelli ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=637b480... ) *commented* on HHH-16254 ( https://hibernate.atlassian.net/browse/HHH-16254?atlOrigin=eyJpIjoiOWZiOD... )
Re: Session load by pk returns proxy in association when using "batch fetch size", "cache", "fetch mode select", "single table inheritance" ( https://hibernate.atlassian.net/browse/HHH-16254?atlOrigin=eyJpIjoiOWZiOD... )
Hello Jones ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) , thanks for reporting the issue and providing a reproducer! Fetching entities when both batching and cache are enabled was changed as part of https://hibernate.atlassian.net/browse/HHH-15921 ( https://hibernate.atlassian.net/browse/HHH-15921 ). In you particular case, the proxy is required to correctly handle eventual associations of the parent entity in the cache.
Can you explain why, in your experience, obtaining a proxy instead of the actual instance is a problem?
( https://hibernate.atlassian.net/browse/HHH-16254#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-16254#add-comment?atlOrigin=ey... )
Get Jira notifications on your phone! Download the Jira Cloud app for Android ( https://play.google.com/store/apps/details?id=com.atlassian.android.jira.... ) or iOS ( https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=EmailN... ) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100217- sha1:2199b34 )
3 years, 1 month
[JIRA] (HHH-16286) NullPointerException: Cannot invoke "EntityInitializer.getNavigablePath()" because "firstEntityInitializer" is null
by Markus Heiden (JIRA)
Markus Heiden ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=6149cfc... ) *updated* an issue
Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiZDE1MjRlMTZk... ) / Bug ( https://hibernate.atlassian.net/browse/HHH-16286?atlOrigin=eyJpIjoiZDE1Mj... ) HHH-16286 ( https://hibernate.atlassian.net/browse/HHH-16286?atlOrigin=eyJpIjoiZDE1Mj... ) NullPointerException: Cannot invoke "EntityInitializer.getNavigablePath()" because "firstEntityInitializer" is null ( https://hibernate.atlassian.net/browse/HHH-16286?atlOrigin=eyJpIjoiZDE1Mj... )
Change By: Markus Heiden ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=6149cfc... )
It looks like removing an element from a persistent list causes problems due to lazy loading in its equals() method:
{noformat}java.lang.NullPointerException: Cannot invoke "org.hibernate.sql.results.graph.entity.EntityInitializer.getNavigablePath()" because "firstEntityInitializer" is null
at org.hibernate.sql.results.graph.entity.internal.BatchEntityInsideEmbeddableSelectFetchInitializer.getRootEmbeddablePropertyName(BatchEntityInsideEmbeddableSelectFetchInitializer.java:191)
at org.hibernate.sql.results.graph.entity.internal.BatchEntityInsideEmbeddableSelectFetchInitializer.<init>(BatchEntityInsideEmbeddableSelectFetchInitializer.java:56)
at org.hibernate.sql.results.graph.entity.internal.EntitySelectFetchInitializerBuilder.createInitializer(EntitySelectFetchInitializerBuilder.java:58)
at org.hibernate.sql.results.graph.entity.internal.EntityFetchSelectImpl.lambda$createAssembler$0(EntityFetchSelectImpl.java:60)
at org.hibernate.sql.results.internal.ResultsHelper$1.resolveInitializer(ResultsHelper.java:108)
at org.hibernate.sql.results.graph.entity.internal.EntityFetchSelectImpl.createAssembler(EntityFetchSelectImpl.java:56)
at org.hibernate.sql.results.graph.embeddable.AbstractEmbeddableInitializer.initializeAssemblers(AbstractEmbeddableInitializer.java:119)
at org.hibernate.sql.results.graph.embeddable.AbstractEmbeddableInitializer.<init>(AbstractEmbeddableInitializer.java:105)
at org.hibernate.sql.results.graph.embeddable.internal.EmbeddableFetchInitializer.<init>(EmbeddableFetchInitializer.java:23)
at org.hibernate.sql.results.graph.embeddable.internal.EmbeddableFetchImpl.lambda$createAssembler$1(EmbeddableFetchImpl.java:135)
at org.hibernate.sql.results.internal.ResultsHelper$1.resolveInitializer(ResultsHelper.java:108)
at org.hibernate.sql.results.graph.embeddable.internal.EmbeddableFetchImpl.createAssembler(EmbeddableFetchImpl.java:132)
at org.hibernate.sql.results.graph.collection.internal.ListInitializerProducer.produceInitializer(ListInitializerProducer.java:54)
at org.hibernate.sql.results.graph.collection.internal.CollectionDomainResult.lambda$createResultAssembler$0(CollectionDomainResult.java:100)
at org.hibernate.sql.results.internal.ResultsHelper$1.resolveInitializer(ResultsHelper.java:108)
at org.hibernate.sql.results.graph.collection.internal.CollectionDomainResult.createResultAssembler(CollectionDomainResult.java:94)
at org.hibernate.sql.results.jdbc.internal.StandardJdbcValuesMapping.resolveAssemblers(StandardJdbcValuesMapping.java:53)
at org.hibernate.sql.results.internal.ResultsHelper.createRowReader(ResultsHelper.java:78)
at org.hibernate.sql.results.internal.ResultsHelper.createRowReader(ResultsHelper.java:64)
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:341)
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:168)
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.list(JdbcSelectExecutorStandardImpl.java:93)
at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:31)
at org.hibernate.loader.ast.internal.SingleIdLoadPlan.load(SingleIdLoadPlan.java:145)
at org.hibernate.loader.ast.internal.SingleIdLoadPlan.load(SingleIdLoadPlan.java:104)
at org.hibernate.loader.ast.internal.CollectionLoaderBatchKey.load(CollectionLoaderBatchKey.java:116)
at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:716)
at org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:75)
at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127)
at org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1697)
at org.hibernate.collection.spi.AbstractPersistentCollection.lambda$initialize$3(AbstractPersistentCollection.java:617)
at org.hibernate.collection.spi.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:265)
at org.hibernate.collection.spi.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:615)
at org.hibernate.collection.spi.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:813)
at org.hibernate.engine.internal.StatefulPersistenceContext.initializeNonLazyCollections(StatefulPersistenceContext.java:985)
at org.hibernate.engine.internal.StatefulPersistenceContext.initializeNonLazyCollections(StatefulPersistenceContext.java:971)
at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:227)
at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:33)
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:362)
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:168)
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.list(JdbcSelectExecutorStandardImpl.java:93)
at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:31)
at org.hibernate.loader.ast.internal.SingleIdLoadPlan.load(SingleIdLoadPlan.java:145)
at org.hibernate.loader.ast.internal.SingleIdEntityLoaderStandardImpl.load(SingleIdEntityLoaderStandardImpl.java:88)
at org.hibernate.loader.ast.internal.SingleIdEntityLoaderDynamicBatch.load(SingleIdEntityLoaderDynamicBatch.java:76)
at org.hibernate.loader.ast.internal.SingleIdEntityLoaderDynamicBatch.load(SingleIdEntityLoaderDynamicBatch.java:58)
at org.hibernate.persister.entity.AbstractEntityPersister.doLoad(AbstractEntityPersister.java:3519)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3509)
at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:602)
at org.hibernate.event.internal.DefaultLoadEventListener.loadFromCacheOrDatasource(DefaultLoadEventListener.java:588)
at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:557)
at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:550)
at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:202)
at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:101)
at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:78)
at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:138)
at org.hibernate.internal.SessionImpl.fireLoadNoChecks(SessionImpl.java:1231)
at org.hibernate.internal.SessionImpl.immediateLoad(SessionImpl.java:1043)
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:173)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:310)
at org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor.intercept(ByteBuddyInterceptor.java:44)
at org.hibernate.proxy.ProxyConfiguration$InterceptorDispatcher.intercept(ProxyConfiguration.java:102)
at com.adsoul.seasupport.keyword.text.ResponsiveTextTemplate$HibernateProxy$G9S96J9K.equals(Unknown Source)
at com.adsoul.seasupport.keyword.accounting.LocalResponsiveText.isFromSameTemplate(LocalResponsiveText.java:323)
at com.adsoul.seasupport.keyword.accounting.LocalResponsiveText.equals(LocalResponsiveText.java:315)
at java.base/java.util.ArrayList.remove(ArrayList.java:624)
at org.hibernate.collection.spi.PersistentList.remove(PersistentList.java:204)
at com.adsoul.seasupport.keyword.accounting.LocalGroup.removeResponsiveText(LocalGroup.java:413)
at com.adsoul.seasupport.keyword.accounting.LocalResponsiveText.remove(LocalResponsiveText.java:308)
at java.base/java.util.stream.ReferencePipeline$15$1.accept(ReferencePipeline.java:540)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at com.adsoul.seasupport.keyword.accounting.LocalAccountManagerImplIT.lambda$cleanUpDatabase$2(LocalAccountManagerImplIT.java:254)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
at com.adsoul.seasupport.keyword.accounting.LocalAccountManagerImplIT.cleanUpDatabase(LocalAccountManagerImplIT.java:245)
at com.adsoul.seasupport.keyword.accounting.LocalAccountManagerImplIT.setUp(LocalAccountManagerImplIT.java:200)
{noformat}
( https://hibernate.atlassian.net/browse/HHH-16286#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-16286#add-comment?atlOrigin=ey... )
Get Jira notifications on your phone! Download the Jira Cloud app for Android ( https://play.google.com/store/apps/details?id=com.atlassian.android.jira.... ) or iOS ( https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=EmailN... ) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100217- sha1:dd34e91 )
3 years, 1 month