[ https://issues.apache.org/jira/browse/OPENJPA-2267?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Leung updated OPENJPA-2267: ------------------------------- Description: if you do a native query with a null resultset where the resulting object is not the model object, it causes a null pointer exception. --------------------------------------------------- mysql> select count(*) from Data; +----------+ | count(*) | +----------+ | 0 | +----------+ 1 row in set (0.00 sec) mysql> select max(id) from Data; +---------+ | max(id) | +---------+ | NULL | +---------+ 1 row in set (0.00 sec) now in java do : Query query = entityManager.createNativeQuery("select max(id) from Data", Long.class); List results = query.getResultList(); The following exception ensues. --------------------------------------------------- org.apache.openjpa.persistence.ArgumentException: Failed to execute query "select max(id) from Data". Check the query syntax for correctness. See nested exception for details. at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:872) at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:794) at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:542) at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:286) at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:302) ... Caused by: java.lang.NullPointerException at org.apache.openjpa.kernel.ResultPacker.pack(ResultPacker.java:202) at org.apache.openjpa.jdbc.kernel.SQLProjectionResultObjectProvider.getResultObject(SQLProjectionResultObjectProvider.java:88) at org.apache.openjpa.lib.rop.RangeResultObjectProvider.getResultObject(RangeResultObjectProvider.java:80) at org.apache.openjpa.lib.rop.EagerResultList.(EagerResultList.java:36) at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1251) at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1007) at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:863) was: if you do a native query with a null resultset where the resulting object is not the model object, it causes a null pointer exception. --------------------------------------------------- mysql> select count(*) from Data; +----------+ | count(*) | +----------+ | 0 | +----------+ 1 row in set (0.00 sec) mysql> select max(id) from Data; +---------+ | max(id) | +---------+ | NULL | +---------+ 1 row in set (0.00 sec) now in java do : Query query = entityManager.createNativeQuery("select max(id) from Data", Long.class); List results = query.getResultList(); The following exception ensues. --------------------------------------------------- org.apache.openjpa.persistence.ArgumentException: Failed to execute query "select max(id) from MedicalData". Check the query syntax for correctness. See nested exception for details. at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:872) at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:794) at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:542) at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:286) at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:302) ... Caused by: java.lang.NullPointerException at org.apache.openjpa.kernel.ResultPacker.pack(ResultPacker.java:202) at org.apache.openjpa.jdbc.kernel.SQLProjectionResultObjectProvider.getResultObject(SQLProjectionResultObjectProvider.java:88) at org.apache.openjpa.lib.rop.RangeResultObjectProvider.getResultObject(RangeResultObjectProvider.java:80) at org.apache.openjpa.lib.rop.EagerResultList.(EagerResultList.java:36) at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1251) at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1007) at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:863) > native query select with null result causes NullPointerException > ---------------------------------------------------------------- > > Key: OPENJPA-2267 > URL: https://issues.apache.org/jira/browse/OPENJPA-2267 > Project: OpenJPA > Issue Type: Bug > Components: query > Affects Versions: 2.2.0 > Environment: my system is fedora 16, MySql 5.5.18 (running innodb), jdk1.6.0_26, openjdk 2.2.0 (also happened in 2.1.0), mysql-connector-java 5.1.18, commons-dbcp 1.4, spring 3.1.1 > Reporter: Ted Leung > Priority: Minor > > if you do a native query with a null resultset where the resulting object is not the model object, it causes a null pointer exception. > --------------------------------------------------- > mysql> select count(*) from Data; > +----------+ > | count(*) | > +----------+ > | 0 | > +----------+ > 1 row in set (0.00 sec) > mysql> select max(id) from Data; > +---------+ > | max(id) | > +---------+ > | NULL | > +---------+ > 1 row in set (0.00 sec) > now in java do : > Query query = entityManager.createNativeQuery("select max(id) from Data", Long.class); > List results = query.getResultList(); > The following exception ensues. > --------------------------------------------------- > org.apache.openjpa.persistence.ArgumentException: Failed to execute query "select max(id) from Data". Check the query syntax for correctness. See nested exception for details. > at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:872) > at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:794) > at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:542) > at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:286) > at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:302) > ... > Caused by: java.lang.NullPointerException > at org.apache.openjpa.kernel.ResultPacker.pack(ResultPacker.java:202) > at org.apache.openjpa.jdbc.kernel.SQLProjectionResultObjectProvider.getResultObject(SQLProjectionResultObjectProvider.java:88) > at org.apache.openjpa.lib.rop.RangeResultObjectProvider.getResultObject(RangeResultObjectProvider.java:80) > at org.apache.openjpa.lib.rop.EagerResultList.(EagerResultList.java:36) > at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1251) > at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1007) > at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:863) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira