I’m trying to migrate my service from hibernate to latest and facing lots of issues. I resolved many with the discussions done in the forum. But I now am facing issue in count Query published in latest version of hibernate.
I have a utility class that executes a query and collects list of values and the count. I implemented my logic based on [HHH-17410] Support creating count query from existing query - Hibernate JIRA (atlassian.net). But I am facing issue while executing count query alone
List<T> ResultSet = entityManager.createQuery(this.criteriaQuery).getResultList(); // returns list output for query
var countQuery = ((SqmSelectStatement) this.criteriaQuery).createCountQuery();
return (Long) entityManager.createQuery(countQuery).getSingleResult(); // throws NullPointerException (attached below)
Cannot invoke "org.hibernate.query.sqm.SqmPathSource.getSqmPathType()" because the return value of "org.hibernate.metamodel.model.domain.EntityDomainType.getIdentifierDescriptor()" is null
java.lang.NullPointerException: Cannot invoke "org.hibernate.query.sqm.SqmPathSource.getSqmPathType()" because the return value of "org.hibernate.metamodel.model.domain.EntityDomainType.getIdentifierDescriptor()" is null
at org.hibernate.query.derived.AnonymousTupleType.addColumnNames(AnonymousTupleType.java:121)
at org.hibernate.query.derived.AnonymousTupleType.determineColumnNames(AnonymousTupleType.java:103)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.consumeFromClauseRoot(BaseSqmToSqlAstConverter.java:2770)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.hibernate.query.sqm.tree.from.SqmFromClause.visitRoots(SqmFromClause.java:80)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitFromClause(BaseSqmToSqlAstConverter.java:2573)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQuerySpec(BaseSqmToSqlAstConverter.java:2055)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQuerySpec(BaseSqmToSqlAstConverter.java:440)
at org.hibernate.query.sqm.tree.select.SqmQuerySpec.accept(SqmQuerySpec.java:127)
at org.hibernate.query.sqm.spi.BaseSemanticQueryWalker.visitQueryPart(BaseSemanticQueryWalker.java:218)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQueryPart(BaseSqmToSqlAstConverter.java:1915)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitSelectStatement(BaseSqmToSqlAstConverter.java:1600)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitSelectStatement(BaseSqmToSqlAstConverter.java:440)
at org.hibernate.query.sqm.tree.select.SqmSelectStatement.accept(SqmSelectStatement.java:228)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.translate(BaseSqmToSqlAstConverter.java:776)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.buildCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:402)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:327)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:303)
at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:509)
at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:427)
at org.hibernate.query.spi.AbstractSelectionQuery.getSingleResult(AbstractSelectionQuery.java:564)
at com.xxx.cloud.flingo.hiberlingo.JPAEntityCriteriaBuilder.count(JPAEntityCriteriaBuilder.java:294)
at com.xxx.cloud.flingo.hiberlingo.DataAccess.getValues(DataAccess.java:166)
at com.xxx.cloud.flingo.hiberlingo.DataAccess.getValues(DataAccess.java:130)
at com.xxx.orgexpiry.odata.service.ODataHelperService.fetch(ODataHelperService.java:42)
at com.xxx.orgexpiry.odata.controller.StateAuditController$1.getEntities(StateAuditController.java:44)
at com.xxx.orgexpiry.odata.AuditControllerTest.testEnumFilters(AuditControllerTest.java:136)
Am I missing something here? Can someone help on this?