Uploaded image for project: 'OpenJPA'
  1. OpenJPA
  2. OPENJPA-2131

Missing IN or OUT parameter exception with OracleDictionary

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.1.1
    • 2.0.2, 2.1.2, 2.2.1.1, 2.2.3, 2.3.0
    • jdbc
    • None
    • Windows with Oracle 11g
    • Patch Available

    Description

      We have generate query with

      Query q = em.createQuery("select e._name, e._id, sum(case when e._status=:pending then e._count else 0 end) from Exceptions e, Historty h where e._guid = :guid and .....
      then set paramenters for both :pending (in select) and :guid (in where), and call q.setMaxResults(100);

      with DB2, everything works fine, and DBDictionary.getSelects() and SQLBuffer.append() will invoke correctly and set parameter of :pending

      with Oracle implementation, OracleDictionary.getSelects(Select sel, boolean distinctIdentifiers, boolean forUpdate) will invoke and SQLBuffer.getSQL() get to call (as two if checks are not satisfied and gos to create a new SQLBuffer instance), but this time :pending parameter will missing to add to _param List,
      Eventually, we'll get Missing IN or OUT parameter exception from to execute query by preparedStatement

      This bug exist in both this branch and trunk.
      We have a work around, after SQLBuffer.getSQL() call, add some code to reset _param list.

      Attachments

        1. OPENJPA-2131.22x.patch
          3 kB
          Albert Lee
        2. OracleInOutParameterIssue.patch
          3 kB
          Zilin Chen

        Activity

          People

            allee8285 Albert Lee
            zilin_chen Zilin Chen
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: