In Hibernate 7 (at least in 7.3.x+) the query cache internally stores instances of QueryResultsCacheImpl.CacheItem and this class is now a Java record.
Ignite 2 throws an UnsupportedOperationException for records, see the following issue:
#11853
As a result, Ignite 2 is not compatible with Hibernate 7, at least not with the query cache enabled.
Stacktrace
...
Caused by: java.lang.UnsupportedOperationException: can't get field offset on a record class: private final long org.hibernate.cache.internal.QueryResultsCacheImpl$CacheItem.timestamp
at jdk.unsupported/sun.misc.Unsafe.objectFieldOffset(Unsafe.java:655)
at org.apache.ignite.internal.util.GridUnsafe.objectFieldOffset(GridUnsafe.java:1216)
at org.apache.ignite.internal.binary.BinariesFactoryImpl.create(BinariesFactoryImpl.java:110)
at org.apache.ignite.internal.binary.BinaryClassDescriptor.(BinaryClassDescriptor.java:366)
at org.apache.ignite.internal.binary.BinaryClassDescriptor.(BinaryClassDescriptor.java:152)
at org.apache.ignite.internal.binary.BinaryContext.createDescriptorForClass(BinaryContext.java:669)
at org.apache.ignite.internal.binary.BinaryContext.descriptorForClass(BinaryContext.java:643)
at org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal0(BinaryWriterExImpl.java:156)
at org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:139)
at org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:126)
at org.apache.ignite.internal.binary.GridBinaryMarshaller.marshal(GridBinaryMarshaller.java:254)
at org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.marshalToBinary(CacheObjectBinaryProcessorImpl.java:487)
at org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.toBinary(CacheObjectBinaryProcessorImpl.java:1383)
at org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.toCacheObject(CacheObjectBinaryProcessorImpl.java:1213)
at org.apache.ignite.internal.processors.cache.GridCacheContext.toCacheObject(GridCacheContext.java:1796)
at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.enlistWriteEntry(GridNearTxLocal.java:1386)
at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.enlistWrite(GridNearTxLocal.java:925)
at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAsync0(GridNearTxLocal.java:597)
at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAsync(GridNearTxLocal.java:446)
at org.apache.ignite.internal.processors.cache.GridCacheAdapter$16.op(GridCacheAdapter.java:1976)
at org.apache.ignite.internal.processors.cache.GridCacheAdapter$16.op(GridCacheAdapter.java:1974)
at org.apache.ignite.internal.processors.cache.GridCacheAdapter.syncOp(GridCacheAdapter.java:3710)
at org.apache.ignite.internal.processors.cache.GridCacheAdapter.put0(GridCacheAdapter.java:1974)
at org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:1952)
at org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:1931)
at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.put(IgniteCacheProxyImpl.java:1290)
at org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.put(GatewayProtectedCacheProxy.java:850)
at org.hibernate.cache.jcache.internal.JCacheAccessImpl.putIntoCache(JCacheAccessImpl.java:41)
at org.hibernate.cache.spi.support.DirectAccessRegionTemplate.putIntoCache(DirectAccessRegionTemplate.java:42)
at org.hibernate.cache.internal.QueryResultsCacheImpl.put(QueryResultsCacheImpl.java:67)
at org.hibernate.sql.results.caching.internal.QueryCachePutManagerEnabledImpl.finishUp(QueryCachePutManagerEnabledImpl.java:60)
at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.finishUp(JdbcValuesResultSetImpl.java:328)
at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:174)
at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:31)
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:213)
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:100)
at org.hibernate.sql.exec.spi.JdbcSelectExecutor.executeQuery(JdbcSelectExecutor.java:63)
at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:137)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.lambda$new$1(ConcreteSqmSelectQueryPlan.java:134)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:464)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:392)
at org.hibernate.query.sqm.internal.SqmQueryImpl.doList(SqmQueryImpl.java:374)
at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:153)
at org.hibernate.query.Query.getResultList(Query.java:121)
In Hibernate 7 (at least in 7.3.x+) the query cache internally stores instances of QueryResultsCacheImpl.CacheItem and this class is now a Java record.
Ignite 2 throws an UnsupportedOperationException for records, see the following issue:
#11853
As a result, Ignite 2 is not compatible with Hibernate 7, at least not with the query cache enabled.
Stacktrace
...
Caused by: java.lang.UnsupportedOperationException: can't get field offset on a record class: private final long org.hibernate.cache.internal.QueryResultsCacheImpl$CacheItem.timestamp
at jdk.unsupported/sun.misc.Unsafe.objectFieldOffset(Unsafe.java:655)
at org.apache.ignite.internal.util.GridUnsafe.objectFieldOffset(GridUnsafe.java:1216)
at org.apache.ignite.internal.binary.BinariesFactoryImpl.create(BinariesFactoryImpl.java:110)
at org.apache.ignite.internal.binary.BinaryClassDescriptor.(BinaryClassDescriptor.java:366)
at org.apache.ignite.internal.binary.BinaryClassDescriptor.(BinaryClassDescriptor.java:152)
at org.apache.ignite.internal.binary.BinaryContext.createDescriptorForClass(BinaryContext.java:669)
at org.apache.ignite.internal.binary.BinaryContext.descriptorForClass(BinaryContext.java:643)
at org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal0(BinaryWriterExImpl.java:156)
at org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:139)
at org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:126)
at org.apache.ignite.internal.binary.GridBinaryMarshaller.marshal(GridBinaryMarshaller.java:254)
at org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.marshalToBinary(CacheObjectBinaryProcessorImpl.java:487)
at org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.toBinary(CacheObjectBinaryProcessorImpl.java:1383)
at org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.toCacheObject(CacheObjectBinaryProcessorImpl.java:1213)
at org.apache.ignite.internal.processors.cache.GridCacheContext.toCacheObject(GridCacheContext.java:1796)
at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.enlistWriteEntry(GridNearTxLocal.java:1386)
at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.enlistWrite(GridNearTxLocal.java:925)
at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAsync0(GridNearTxLocal.java:597)
at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAsync(GridNearTxLocal.java:446)
at org.apache.ignite.internal.processors.cache.GridCacheAdapter$16.op(GridCacheAdapter.java:1976)
at org.apache.ignite.internal.processors.cache.GridCacheAdapter$16.op(GridCacheAdapter.java:1974)
at org.apache.ignite.internal.processors.cache.GridCacheAdapter.syncOp(GridCacheAdapter.java:3710)
at org.apache.ignite.internal.processors.cache.GridCacheAdapter.put0(GridCacheAdapter.java:1974)
at org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:1952)
at org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:1931)
at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.put(IgniteCacheProxyImpl.java:1290)
at org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.put(GatewayProtectedCacheProxy.java:850)
at org.hibernate.cache.jcache.internal.JCacheAccessImpl.putIntoCache(JCacheAccessImpl.java:41)
at org.hibernate.cache.spi.support.DirectAccessRegionTemplate.putIntoCache(DirectAccessRegionTemplate.java:42)
at org.hibernate.cache.internal.QueryResultsCacheImpl.put(QueryResultsCacheImpl.java:67)
at org.hibernate.sql.results.caching.internal.QueryCachePutManagerEnabledImpl.finishUp(QueryCachePutManagerEnabledImpl.java:60)
at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.finishUp(JdbcValuesResultSetImpl.java:328)
at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:174)
at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:31)
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:213)
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:100)
at org.hibernate.sql.exec.spi.JdbcSelectExecutor.executeQuery(JdbcSelectExecutor.java:63)
at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:137)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.lambda$new$1(ConcreteSqmSelectQueryPlan.java:134)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:464)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:392)
at org.hibernate.query.sqm.internal.SqmQueryImpl.doList(SqmQueryImpl.java:374)
at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:153)
at org.hibernate.query.Query.getResultList(Query.java:121)