[JIRA] (HHH-17004) Nullpointer wenn using setFirstResult and setMaxResults in diffrent combinations
by Leopold Odenthal (JIRA)
Leopold Odenthal ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) *updated* an issue
Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiNjFiYTY2NTk3... ) / Bug ( https://hibernate.atlassian.net/browse/HHH-17004?atlOrigin=eyJpIjoiNjFiYT... ) HHH-17004 ( https://hibernate.atlassian.net/browse/HHH-17004?atlOrigin=eyJpIjoiNjFiYT... ) Nullpointer wenn using setFirstResult and setMaxResults in diffrent combinations ( https://hibernate.atlassian.net/browse/HHH-17004?atlOrigin=eyJpIjoiNjFiYT... )
Change By: Leopold Odenthal ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... )
When using EntityManager Query {{setFirstResult}} and {{setMaxResults}} and exuxute the same query again, but just with {{setMaxResults}} it results in a NullPointer.
The problem is in the caching of the parameters when a same query is executed. There is a parameter validation here that look wrong:{{JdbcOperationQuerySelect}}.{{isCompatible}}
Current:
return value != (int) jdbcParameterBinding.getBindValue();
But should be:
return value == (int) jdbcParameterBinding.getBindValue();
{quote}java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.hibernate.query.spi.Limit.getFirstRow()" is null
at org.hibernate.sql.ast.spi.AbstractSqlAstTranslator$OffsetReceivingParameterBinder.bindParameterValue(AbstractSqlAstTranslator.java:4120) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.bindParameters(DeferredResultSetAccess.java:199) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:228) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:163) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.advanceNext(JdbcValuesResultSetImpl.java:254) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.processNext(JdbcValuesResultSetImpl.java:134) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.sql.results.jdbc.internal.AbstractJdbcValues.next(AbstractJdbcValues.java:19) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.sql.results.internal.RowProcessingStateStandardImpl.next(RowProcessingStateStandardImpl.java:66) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:198) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:33) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:361) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:168) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.list(JdbcSelectExecutorStandardImpl.java:93) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:31) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.lambda$new$0(ConcreteSqmSelectQueryPlan.java:110) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:303) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:244) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:518) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:367) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
at org.hibernate.query.Query.getResultList(Query.java:119) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]{quote}
{noformat} @Test
public void testMaxAndLimit_HQL_BUG()
{
EntityManager entityManager = Services.getEntityManager();
TypedQuery<MitarbeiterEntity> query = entityManager.createQuery("select m from MitarbeiterEntity m", MitarbeiterEntity.class);
query.setMaxResults(10);
query.getResultList();
query = entityManager.createQuery("select m from MitarbeiterEntity m", MitarbeiterEntity.class);
query.setMaxResults(10);
query.setFirstResult(2);
query.getResultList();
query = entityManager.createQuery("select m from MitarbeiterEntity m", MitarbeiterEntity.class);
query.setMaxResults(10);
query.getResultList();
}{noformat}
( https://hibernate.atlassian.net/browse/HHH-17004#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-17004#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#100233- sha1:63d45e1 )
2 years, 4 months
[JIRA] (HHH-17004) Nullpointer wenn using setFetchSize and setMaxResults in diffrent combinations
by Leopold Odenthal (JIRA)
Leopold Odenthal ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) *created* an issue
Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiYjY3YjA4M2E1... ) / Bug ( https://hibernate.atlassian.net/browse/HHH-17004?atlOrigin=eyJpIjoiYjY3Yj... ) HHH-17004 ( https://hibernate.atlassian.net/browse/HHH-17004?atlOrigin=eyJpIjoiYjY3Yj... ) Nullpointer wenn using setFetchSize and setMaxResults in diffrent combinations ( https://hibernate.atlassian.net/browse/HHH-17004?atlOrigin=eyJpIjoiYjY3Yj... )
Issue Type: Bug Affects Versions: 6.2.5 Assignee: Unassigned Components: hibernate-core Created: 26/Jul/2023 23:21 PM Environment: Java 17, Hibernate 6.2.5, SpringBoot 3.1.1 Priority: Major Reporter: Leopold Odenthal ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... )
When using EntityManager Query setFirstResult and setMaxResults and exuxute the same query again, but just with setMaxResults it results in a NullPointer.
The problem is in the caching of the parameters when a same query is executed. There is a parameter validation here that look wrong: JdbcOperationQuerySelect. isCompatible
Current:
return value != (int) jdbcParameterBinding.getBindValue();
But should be:
return value == (int) jdbcParameterBinding.getBindValue();
>
>
>
> java.lang.NullPointerException: Cannot invoke
> "java.lang.Integer.intValue()" because the return value of
> "org.hibernate.query.spi.Limit.getFirstRow()" is null
> at
> org.hibernate.sql.ast.spi.AbstractSqlAstTranslator$OffsetReceivingParameterBinder.bindParameterValue(AbstractSqlAstTranslator.java:4120)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.bindParameters(DeferredResultSetAccess.java:199)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:228)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:163)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.advanceNext(JdbcValuesResultSetImpl.java:254)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.processNext(JdbcValuesResultSetImpl.java:134)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.sql.results.jdbc.internal.AbstractJdbcValues.next(AbstractJdbcValues.java:19)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.sql.results.internal.RowProcessingStateStandardImpl.next(RowProcessingStateStandardImpl.java:66)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:198)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:33)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:361)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:168)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.list(JdbcSelectExecutorStandardImpl.java:93)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:31)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.lambda$new$0(ConcreteSqmSelectQueryPlan.java:110)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:303)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:244)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:518)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at
> org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:367)
> ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
> at org.hibernate.query.Query.getResultList(Query.java:119) ~ [hibernate-core-6.2.5.Final.jar:6.2.5.Final]
>
>
>
( https://hibernate.atlassian.net/browse/HHH-17004#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-17004#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#100233- sha1:63d45e1 )
2 years, 4 months