1. OpenJPA
  2. OPENJPA-421

OpenJPA generates bad SQL before configuration fully populated


    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.0.0, 1.0.1, 1.1.0
    • Fix Version/s: 1.0.1, 1.1.0
    • Component/s: jdbc
    • Labels:


      When openjpa.jdbc.DBDictionary is set in persistence.xml file, OpenJPA creates a new DBDictionary instance by loading the class specified in the properties without trying to connect to database. It leaves version related configuration unset until the first connection to the database and creates the window of referencing partial properties in the DBDictionary. The problem happens when the first sql statement gets constructed within this window with lack of the knowledge of the version of the database.

      For example, with the setting that described below, BIGINT was generated in the
      SQL statement to be run on DB2 z/OS V8 and failed to execute because BIGINT was not supported on that version of z/OS DB2.

      1. commenting out the setting of "openjpa.jdbc.SynchronizeMappings".
      2. configure the connection properties to a z/OS database
      3. issuing a statement similar to the following to generate SQL statement with
      "CAST(? AS BIGINT)".

      Here is the testcase that I use to create the problem:
      EntityManagerFactory emf1 =
      EntityManager em1 = emf1.createEntityManager();
      Order o3 = (Order) em1.createQuery(
      "select o from Order o where o.oid = 68").getSingleResult();

      SELECT t0.oid, t0.version, t0.amount, t0.delivered FROM Order t0
      WHERE (t0.oid = CAST(? AS BIGINT)) optimize for 1 row [params=(long) 68]


        Daniel Lee created issue -
        Daniel Lee made changes -
        Field Original Value New Value
        Attachment OPENJPA-421.patch [ 12368530 ]
        Michael Dick made changes -
        Attachment OPENJPA-421.patch [ 12368609 ]
        Daniel Lee made changes -
        Attachment OPENJPA-421.patch [ 12368530 ]
        Kevin Sutter made changes -
        Assignee Daniel Lee [ dtlee ]
        Kevin Sutter made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Fix Version/s 1.0.1 [ 12312687 ]
        Resolution Fixed [ 1 ]
        Donald Woods made changes -
        Status Resolved [ 5 ] Closed [ 6 ]


          • Assignee:
            Daniel Lee
            Daniel Lee
          • Votes:
            0 Vote for this issue
            0 Start watching this issue


            • Created: