NullPointerException when calling StoredProcedureQuery.getResultStream() instead of StoredProcedureQuery.getResultList()
Description
Activity
Show:
Nathan Xu December 7, 2019 at 10:58 PM
I created a PR for this: https://github.com/hibernate/hibernate-orm/pull/3134
Fixed
Details
Details
Assignee
Nathan Xu
Nathan XuReporter
BakaryD
BakaryDComponents
Fix versions
Affects versions
Priority
Created September 27, 2019 at 2:32 PM
Updated February 7, 2020 at 5:20 PM
Resolved January 7, 2020 at 5:02 PM
Dear team,
After performance latency and Out of Memory issues of using javax.persistence.StoredProcedureQuery.getResultList() during for data lookup, I decide to use javax.persistence.StoredProcedureQuery.getResultStream() to avoid them.
But this leads to a NullPointerException because of missing implementation of org.hibernate.procedure.ProcedureCall.getQueryString() called by session scroll as you can see in the below trace.
StoredProcedureQuery spQuery = entityManager.createNamedStoredProcedureQuery("Proc_name"); Stream<MappedEntityType> queryResultStream = spQuery.getResultStream(); // <-- NPE return queryResultStream;
[TRACE]
java.lang.NullPointerException: null
at org.hibernate.engine.query.spi.QueryPlanCache$HQLQueryPlanKey.<init>(QueryPlanCache.java:299) ~[hibernate-core-5.3.9.Final.jar:5.3.9.Final]
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:149) ~[hibernate-core-5.3.9.Final.jar:5.3.9.Final]
at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:605) ~[hibernate-core-5.3.9.Final.jar:5.3.9.Final]
at org.hibernate.internal.SessionImpl.scroll(SessionImpl.java:1632) ~[hibernate-core-5.3.9.Final.jar:5.3.9.Final]
at org.hibernate.query.internal.AbstractProducedQuery.doScroll(AbstractProducedQuery.java:1476) ~[hibernate-core-5.3.9.Final.jar:5.3.9.Final]
at org.hibernate.query.internal.AbstractProducedQuery.scroll(AbstractProducedQuery.java:1462) ~[hibernate-core-5.3.9.Final.jar:5.3.9.Final]
at org.hibernate.query.internal.AbstractProducedQuery.stream(AbstractProducedQuery.java:1486) ~[hibernate-core-5.3.9.Final.jar:5.3.9.Final]
at org.hibernate.query.Query.getResultStream(Query.java:1107) ~[hibernate-core-5.3.9.Final.jar:5.3.9.Final]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_202]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_202]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_202]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_202]
at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:402) ~[spring-orm-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at com.sun.proxy.$Proxy164.getResultStream(Unknown Source) ~[?:?]
/TRACE
Thanks and regards,