Marko Bekhta (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%...
) *created* an issue
Hibernate ORM (
https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiZTdmOTVlMGQ1...
) / Bug (
https://hibernate.atlassian.net/browse/HHH-16740?atlOrigin=eyJpIjoiZTdmOT...
) HHH-16740 (
https://hibernate.atlassian.net/browse/HHH-16740?atlOrigin=eyJpIjoiZTdmOT...
) Fetching an element collection on an entity with a composite id fails when batch size
> 1 (
https://hibernate.atlassian.net/browse/HHH-16740?atlOrigin=eyJpIjoiZTdmOT...
)
Issue Type: Bug Affects Versions: 6.2.4 Assignee: Unassigned Created: 02/Jun/2023 03:26 AM
Priority: Major Reporter: Marko Bekhta (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%...
)
Having a model like:
@Entity(name = "EntityA" )
public class EntityA {
@EmbeddedId
private EntityId id;
@ElementCollection
public Set<EmbeddableA> elementCollection = new HashSet<>();
}
@Entity(name = "EntityB" )
public class EntityB {
@Id
private Long id;
}
@Embeddable
public class EntityId implements Serializable {
private String id1;
@ManyToOne
@MapsId
private EntityB id2;
}
@Embeddable
public class EmbeddableA {
private String name;
}
Trying to access element collection:
EntityA a = entityManager.find( EntityA.class, ENTITY_A_ID );
a.elementCollection.size();
Leads to:
java.lang.NullPointerException
at
org.hibernate.sql.results.graph.entity.internal.BatchEntityInsideEmbeddableSelectFetchInitializer.getRootEmbeddablePropertyName(BatchEntityInsideEmbeddableSelectFetchInitializer.java:190)
at
org.hibernate.sql.results.graph.entity.internal.BatchEntityInsideEmbeddableSelectFetchInitializer.<init>(BatchEntityInsideEmbeddableSelectFetchInitializer.java:57)
at
org.hibernate.sql.results.graph.entity.internal.EntitySelectFetchInitializerBuilder.createInitializer(EntitySelectFetchInitializerBuilder.java:62)
at
org.hibernate.sql.results.graph.entity.internal.EntityFetchSelectImpl.buildEntitySelectFetchInitializer(EntityFetchSelectImpl.java:92)
at
org.hibernate.sql.results.graph.entity.internal.EntityFetchSelectImpl.lambda$createAssembler$0(EntityFetchSelectImpl.java:70)
at
org.hibernate.sql.results.internal.ResultsHelper$1.resolveInitializer(ResultsHelper.java:117)
at
org.hibernate.sql.results.graph.entity.internal.EntityFetchSelectImpl.createAssembler(EntityFetchSelectImpl.java:67)
at
org.hibernate.sql.results.graph.embeddable.AbstractEmbeddableInitializer.createAssemblers(AbstractEmbeddableInitializer.java:109)
at
org.hibernate.sql.results.graph.embeddable.AbstractEmbeddableInitializer.<init>(AbstractEmbeddableInitializer.java:75)
at
org.hibernate.sql.results.graph.embeddable.internal.EmbeddableResultInitializer.<init>(EmbeddableResultInitializer.java:22)
at
org.hibernate.sql.results.graph.embeddable.internal.EmbeddableForeignKeyResultImpl.lambda$createResultAssembler$0(EmbeddableForeignKeyResultImpl.java:104)
at
org.hibernate.sql.results.internal.ResultsHelper$1.resolveInitializer(ResultsHelper.java:117)
at
org.hibernate.sql.results.graph.embeddable.internal.EmbeddableForeignKeyResultImpl.createResultAssembler(EmbeddableForeignKeyResultImpl.java:99)
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:117)
at
org.hibernate.sql.results.graph.collection.internal.CollectionDomainResult.createResultAssembler(CollectionDomainResult.java:96)
at
org.hibernate.sql.results.jdbc.internal.StandardJdbcValuesMapping.resolveAssemblers(StandardJdbcValuesMapping.java:53)
at
org.hibernate.sql.results.internal.ResultsHelper.createRowReader(ResultsHelper.java:76)
at
org.hibernate.sql.results.internal.ResultsHelper.createRowReader(ResultsHelper.java:62)
at
org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:340)
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.CollectionLoaderSingleKey.load(CollectionLoaderSingleKey.java:115)
at
org.hibernate.loader.ast.internal.AbstractCollectionBatchLoader.load(AbstractCollectionBatchLoader.java:89)
at
org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:679)
at
org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:67)
at
org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127)
at org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1703)
at
org.hibernate.collection.spi.AbstractPersistentCollection.lambda$initialize$3(AbstractPersistentCollection.java:615)
at
org.hibernate.collection.spi.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:264)
at
org.hibernate.collection.spi.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:613)
at
org.hibernate.collection.spi.AbstractPersistentCollection.read(AbstractPersistentCollection.java:136)
at
org.hibernate.collection.spi.AbstractPersistentCollection.lambda$readSize$0(AbstractPersistentCollection.java:162)
at
org.hibernate.collection.spi.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:264)
at
org.hibernate.collection.spi.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:148)
at org.hibernate.collection.spi.PersistentSet.size(PersistentSet.java:151)
at
org.hibernate.orm.test.batch.CompositeIdAndElementCollectionBatchingTest.lambda$testSelect$1(CompositeIdAndElementCollectionBatchingTest.java:65)
at
org.hibernate.testing.orm.transaction.TransactionUtil.wrapInTransaction(TransactionUtil.java:49)
at
org.hibernate.testing.orm.transaction.TransactionUtil.inTransaction(TransactionUtil.java:24)
at
org.hibernate.testing.orm.junit.SessionFactoryExtension$SessionFactoryScopeImpl.inTransaction(SessionFactoryExtension.java:375)
at
org.hibernate.testing.orm.junit.SessionFactoryExtension$SessionFactoryScopeImpl.inTransaction(SessionFactoryExtension.java:352)
at
org.hibernate.orm.test.batch.CompositeIdAndElementCollectionBatchingTest.testSelect(CompositeIdAndElementCollectionBatchingTest.java:62)
I will submit a reproducer. Most likely the same/similar problem as in (
https://hibernate.atlassian.net/browse/HHH-16286 ), but since there was no test case in
the original issue, I’m opening this one.
(
https://hibernate.atlassian.net/browse/HHH-16740#add-comment?atlOrigin=ey...
) Add Comment (
https://hibernate.atlassian.net/browse/HHH-16740#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=Em...
) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100225- sha1:e03cc87 )