OpenJPA
  1. OpenJPA
  2. OPENJPA-2267

native query select with null result causes NullPointerException

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 2.2.0, 2.3.0
    • Fix Version/s: 2.3.0
    • Component/s: query
    • Labels:
      None
    • 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

      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> 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)

        Issue Links

          Activity

          Hide
          ASF subversion and git services added a comment -

          Commit 1509299 from Jody Grassel in branch 'openjpa/branches/2.2.x'
          [ https://svn.apache.org/r1509299 ]

          OPENJPA-2267: native query select with null result causes NullPointerException

          Show
          ASF subversion and git services added a comment - Commit 1509299 from Jody Grassel in branch 'openjpa/branches/2.2.x' [ https://svn.apache.org/r1509299 ] OPENJPA-2267 : native query select with null result causes NullPointerException
          Hide
          ASF subversion and git services added a comment -

          Commit 1508983 from Jody Grassel in branch 'openjpa/branches/2.1.x'
          [ https://svn.apache.org/r1508983 ]

          OPENJPA-2267: native query select with null result causes NullPointerException

          Show
          ASF subversion and git services added a comment - Commit 1508983 from Jody Grassel in branch 'openjpa/branches/2.1.x' [ https://svn.apache.org/r1508983 ] OPENJPA-2267 : native query select with null result causes NullPointerException
          Hide
          Rick Curtis added a comment -

          Committed revision 1391218 to trunk.

          Show
          Rick Curtis added a comment - Committed revision 1391218 to trunk.
          Hide
          Ted Leung added a comment -

          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.

          Show
          Ted Leung added a comment - 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.

            People

            • Assignee:
              Rick Curtis
              Reporter:
              Ted Leung
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development