Benedikt Biallowons (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=712020%...
) *updated* an issue
Hibernate ORM (
https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiYWIyOTNjNTA2...
) / Bug (
https://hibernate.atlassian.net/browse/HHH-16745?atlOrigin=eyJpIjoiYWIyOT...
) HHH-16745 (
https://hibernate.atlassian.net/browse/HHH-16745?atlOrigin=eyJpIjoiYWIyOT...
) TransientObjectException when loading versioned entity from second-level cache with
@OneToOne LAZY mapping (
https://hibernate.atlassian.net/browse/HHH-16745?atlOrigin=eyJpIjoiYWIyOT...
)
Change By: Benedikt Biallowons (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=712020%...
)
While upgrading from Hibernate ORM 5.3.28.Final to 6.2.1.Final (due to an application
server update from Wildfly 26.1.3 to Wildfly 28.0.1) we encountered following error when
fetching data from our database / 2nd Level Cache:
{code:none}Caused by: org.hibernate.TransientObjectException: object references an unsaved
transient instance - save the transient instance before flushing: tld.domain.Model
at
org.hibernate@6.2.1.Final//org.hibernate.engine.internal.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:346)
at
org.hibernate@6.2.1.Final//org.hibernate.type.ManyToOneType.disassemble(ManyToOneType.java:171)
at
org.hibernate@6.2.1.Final//org.hibernate.cache.spi.entry.CacheEntryHelper.disassemble(CacheEntryHelper.java:48)
at
org.hibernate@6.2.1.Final//org.hibernate.cache.spi.entry.StandardCacheEntryImpl.<init>(StandardCacheEntryImpl.java:50)
at
org.hibernate@6.2.1.Final//org.hibernate.persister.entity.AbstractEntityPersister$StandardCacheEntryHelper.buildCacheEntry(AbstractEntityPersister.java:4456)
at
org.hibernate@6.2.1.Final//org.hibernate.persister.entity.AbstractEntityPersister.buildCacheEntry(AbstractEntityPersister.java:3604)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.results.graph.entity.AbstractEntityInitializer.putInCache(AbstractEntityInitializer.java:939)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.results.graph.entity.AbstractEntityInitializer.updateCaches(AbstractEntityInitializer.java:873)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.results.graph.entity.AbstractEntityInitializer.finishUpRow(AbstractEntityInitializer.java:1140)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.results.internal.InitializersList.finishUpRow(InitializersList.java:64)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.results.internal.StandardRowReader.afterRow(StandardRowReader.java:104)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.results.internal.StandardRowReader.readRow(StandardRowReader.java:97)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:179)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:33)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:362)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:168)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.list(JdbcSelectExecutorStandardImpl.java:93)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:31)
at
org.hibernate@6.2.1.Final//org.hibernate.loader.ast.internal.SingleUniqueKeyEntityLoaderStandard.load(SingleUniqueKeyEntityLoaderStandard.java:98)
at
org.hibernate@6.2.1.Final//org.hibernate.persister.entity.AbstractEntityPersister.loadByUniqueKey(AbstractEntityPersister.java:2460)
at
org.hibernate@6.2.1.Final//org.hibernate.persister.entity.AbstractEntityPersister.loadByUniqueKey(AbstractEntityPersister.java:2452)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.results.graph.entity.internal.EntitySelectFetchByUniqueKeyInitializer.initializeInstance(EntitySelectFetchByUniqueKeyInitializer.java:85)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.results.internal.InitializersList.initializeInstance(InitializersList.java:70)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.results.internal.StandardRowReader.coordinateInitializers(StandardRowReader.java:111)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.results.internal.StandardRowReader.readRow(StandardRowReader.java:87)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:199)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:33)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:362)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:168)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.list(JdbcSelectExecutorStandardImpl.java:93)
at
org.hibernate@6.2.1.Final//org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:31)
at
org.hibernate@6.2.1.Final//org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.lambda$new$0(ConcreteSqmSelectQueryPlan.java:109)
at
org.hibernate@6.2.1.Final//org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:302)
at
org.hibernate@6.2.1.Final//org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:243)
at
org.hibernate@6.2.1.Final//org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:521)
at
org.hibernate@6.2.1.Final//org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:367{code}
After digging deeper we found out that the following that the combination:
* Second Level Caching enabled
* Optimistic locking using the @Version annotation
* @OneToOne{FetchType.LAZY) on a one-to-one bidrectional (on the property of the
referenced entity)
is causing this TransientObjectException while trying to fetch data.
This issue seems to be close to
[
https://hibernate.atlassian.net/browse/HHH-16126|https://hibernate.atlass...]
.
We validated that the issue still exists in: 6.2.4, 6.2.3 and 6.2.2.
A Pull-Request for reproducing the error will be attached shortly.
(
https://hibernate.atlassian.net/browse/HHH-16745#add-comment?atlOrigin=ey...
) Add Comment (
https://hibernate.atlassian.net/browse/HHH-16745#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 )