OpenJPA
  1. OpenJPA
  2. OPENJPA-774

Executing native queries with Firebird

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.1.0, 1.2.0, 1.3.0, 2.0.0-M2
    • Fix Version/s: 1.3.0, 2.0.0-beta3
    • Component/s: sql
    • Labels:
      None
    • Environment:
      Tomcat 5.5, OpenJPA 1.1.0, Firebird 2.1

      Description

      Native queries cannot be executed with Firebird database. The following exception occur:
      DEBUG - Log4JLogFactory$LogAdapter.trace(72) | Executing query: [insert into ANAGRAFICHE (COD_TITOLARE, NOME, CODICE_FISCALE, DATA_NASCITA) values (?, ?, ?, ?)] with parameters:

      {2=xz0FEdrz92sd, 0=43, 3=Tue Aug 30 00:00:00 UTC 1644, 1=B95JHSkDV}

      WARN - GeronimoConnectionEventListener.connectionErrorOccurred(88) | connectionErrorOccurred called with null
      org.firebirdsql.jdbc.FBSQLException: You cannot set value of an non-existing parameter.
      at org.firebirdsql.jdbc.FBProcedureCall$NullParam.setValue(FBProcedureCall.java:424)
      at org.firebirdsql.jdbc.AbstractCallableStatement.setLong(AbstractCallableStatement.java:1094)
      at org.tranql.connector.jdbc.PreparedStatementHandle.setLong(PreparedStatementHandle.java:247)
      at org.apache.ode.utils.LoggingStatementWrapper.setLong(LoggingStatementWrapper.java:495)
      at org.apache.openjpa.lib.jdbc.DelegatingCallableStatement.setLong(DelegatingCallableStatement.java:299)
      at org.apache.openjpa.jdbc.sql.DBDictionary.setLong(DBDictionary.java:998)
      at org.apache.openjpa.jdbc.sql.DBDictionary.setUnknown(DBDictionary.java:1283)
      at org.apache.openjpa.jdbc.sql.SQLBuffer.setParameters(SQLBuffer.java:568)
      at org.apache.openjpa.jdbc.kernel.SQLStoreQuery$SQLExecutor.executeUpdate(SQLStoreQuery.java:231)
      at org.apache.openjpa.kernel.QueryImpl.update(QueryImpl.java:1038)
      at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:808)
      at org.apache.openjpa.kernel.QueryImpl.updateAll(QueryImpl.java:883)
      at org.apache.openjpa.kernel.DelegatingQuery.updateAll(DelegatingQuery.java:573)
      at org.apache.openjpa.persistence.QueryImpl.executeUpdate(QueryImpl.java:319)

      Exception is thrown because for "insert" statement prepareCall is executed instead of prepareStatement. For other databases it is the same, but Firebird's FBProcedureCall is not the same as FBPreparedStatement. Patch for issue follows.

      1. OPENJPA-774.patch
        0.7 kB
        Alexey Ousov

        Issue Links

          Activity

          Donald Woods made changes -
          Fix Version/s 2.0.0-beta2 [ 12314802 ]
          Fix Version/s 2.0.0-beta3 [ 12314857 ]
          Fix Version/s 2.0.0 [ 12314019 ]
          Fix Version/s 2.0.0-beta [ 12314149 ]
          Donald Woods made changes -
          Status Resolved [ 5 ] Closed [ 6 ]
          Kevin Sutter made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Kevin Sutter made changes -
          Fix Version/s 2.0.0-beta2 [ 12314802 ]
          Fix Version/s 2.0.0-beta [ 12314149 ]
          Milosz Tylenda made changes -
          Fix Version/s 1.3.0 [ 12313326 ]
          Fix Version/s 2.0.0 [ 12314019 ]
          Milosz Tylenda made changes -
          Link This issue is related to OPENJPA-1197 [ OPENJPA-1197 ]
          Kevin Sutter made changes -
          Affects Version/s 1.3.0 [ 12313326 ]
          Affects Version/s 2.0.0 [ 12313483 ]
          Kevin Sutter made changes -
          Assignee Kevin Sutter [ kwsutter ]
          Alexey Ousov made changes -
          Field Original Value New Value
          Attachment OPENJPA-774.patch [ 12394214 ]
          Alexey Ousov created issue -

            People

            • Assignee:
              Kevin Sutter
              Reporter:
              Alexey Ousov
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development