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

QuerySQLCache broken for Entities with @EmbeddedId

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.2.0, 2.3.0
    • 2.3.0
    • query
    • None
    • Patch Available

    Description

      Multiple calls of a query which has some Relationships with @EmbeddedId fields fails if QuerySQLCache is enabled.

      q = em.createQuery("select l from ListTest l where l.te=:test");
      does create:
      SELECT t0.id, t0.keyA, t0.keyB, t0.keyC, t1.keyA, t1.keyB, t1.keyC, t1.data1,
      t1.data2
      FROM ListTest t0 LEFT OUTER JOIN TestEntity t1 ON t0.keyA = t1.keyA AND t0.keyB
      = t1.keyB AND t0.keyC = t1.keyC
      WHERE (t0.keyA = ? AND t0.keyB = ? AND t0.keyC = ?)
      [params=(int) 1, (int) 2, (int) 3]

      however a second query will create:
      q = em.createQuery("select l from ListTest l where l.te=:test");
      SELECT t0.id, t0.keyA, t0.keyB, t0.keyC, t1.keyA, t1.keyB, t1.keyC, t1.data1,
      t1.data2
      FROM ListTest t0 LEFT OUTER JOIN TestEntity t1 ON t0.keyA = t1.keyA AND t0.keyB
      = t1.keyB AND t0.keyC = t1.keyC
      WHERE (t0.keyA = ? AND t0.keyB = ? AND t0.keyC = ?)
      [params=(int) 3, (int) 2, (int) 3]

      Note the wrong first param !
      (There is some Index filed calculated somewhere in the query and the index Array has [0,0,0] as values, so the 0th position does get updated three times .. the bug should be something with the index i think)

      See attached test-project

      Attachments

        1. OPENJPA-2228.patch
          15 kB
          Helen Xu
        2. openjpaBugreport.zip
          6 kB
          Michael Glauche

        Activity

          People

            helenxu Helen Xu
            mglauche Michael Glauche
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: