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

Incorrect handling of cascading bidirectional collections during merge/attach

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.9.7
    • Fix Version/s: 1.1.0
    • Component/s: kernel
    • Labels:
      None
    • Environment:
      platform-independent

      Description

      As posted on open-jpa-dev mailing list:


      I'm having a problem merging an entity, here's the simplified structure:

      Class A { @OneToMany(cascade=CascadeType.ALL, mappedBy="parent")
      Set<B> b_set;
      ...
      }

      Class B {
      @ManyToOne
      A parent;

      @OneToMany(cascade=CascadeType.ALL, mappedBy="parent")
      Set<C> c_set;
      ...
      }

      Class C {
      @ManyToOne
      B parent;
      ...
      }

      New instances of A,B,C are persisted correctly. However when I retrieve A, add some entries to A.b_set (with some of the new B entries have attached C's), em.merge(A) fails:

      • If A is detached:

      org.apache.openjpa.persistence.ArgumentException: Encountered new object "B@..." in persistent field "C.parent" of managed object "C@..." during attach. However, this field does not allow cascade attach. You cannot attach a reference to a new object without cascading.

      • If A is not detached:
        C instances are inserted before B instances, resulting in a foreign key violation.

      Setting openjpa.jdbc.SchemaFactory to 'native(ForeignKeys=true)' does not seem to have an effect.


        Attachments

        1. openjpa-jira-231-255-new.patch
          19 kB
          Xiaoqin Feng
        2. openjpa-231-1.1.x.patch
          17 kB
          Xiaoqin Feng
        3. openjpa-231.patch
          0.8 kB
          Markus Fuchs
        4. jira-test-case.zip
          5 kB
          Gokhan Ergul

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                gergul Gokhan Ergul
              • Votes:
                2 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: