openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ted Leung (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (OPENJPA-2267) native query select with null result causes NullPointerException
Date Wed, 26 Sep 2012 02:48:07 GMT

    [ https://issues.apache.org/jira/browse/OPENJPA-2267?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13463481#comment-13463481
] 

Ted Leung commented on OPENJPA-2267:
------------------------------------

for a work around (at least for mysql users) change the select to 

select ifnull(max(id),0) from Data

Might not work for all use cases but in the case of trying to retrieve the max(id) it will
work.
                
> 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> desc Data;
> +--------------------------+--------------+------+-----+---------+----------------+
> | Field                    | Type         | Null | Key | Default | Extra          |
> +--------------------------+--------------+------+-----+---------+----------------+
> | id                       | bigint(20)   | NO   | PRI | NULL    | auto_increment |
> | data                     | mediumblob   | YES  |     | NULL    |                |
> +--------------------------+--------------+------+-----+---------+----------------+
> 12 rows in set (0.01 sec)
> 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.
> ---------------------------------------------------
> <openjpa-2.2.0-r422266:1244990 nonfatal user error> 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.<init>(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

Mime
View raw message