Uploaded image for project: 'Cayenne'
  1. Cayenne
  2. CAY-2242

Vertical Inheritance: Cannot Insert Record With Multiple Flattened Relationships

    XMLWordPrintableJSON

Details

    Description

      Copied and directly related to issue CAY-2122

      When using the following DbEntities:

      IV_OTHER (id, name)
      IV_BASE (id, type, name)
      IV_IMPL (id, attr1, attr2, other1_id, other2_id) (vertically inherits IV_BASE)

      all fields are non-null

      We end up with ObjEntities:
      IvOther
      IvBase (abstract)
      IvImpl extends IvBase

      When running the following code:

      IvOther other1 = context.newObject(IvOther.class);
      other1.setName("other1");
      
      IvOther other2 = context.newObject(IvOther.class);
      other2.setName("other2");
      
      IvImpl impl = context.newObject(IvImpl.class);
      impl.setName("Impl 1");
      impl.setAttr1("attr1");
      impl.setAttr2("attr2");
      impl.setOther1(other1);
      impl.setOther2(other2);
      
      context.commitChanges();
      

      Committing this errors in the database, because its trying to insert into the IV_IMPL table with a NULL value for OTHER2_ID

      The original issue (and test) was referring to an Entity that only had 1 flattened relationship. I recently had to add another relationship to this Entity, and discovered the same bug pops up again. This time its because the new code does not handle merging the flattenedArcKeys if more than one exists per ObjectId.

      I will upload the breaking test shortly.

      Attachments

        1. CAY_2242_breaking_test.patch
          6 kB
          Matt Watson
        2. CAY_2242_breaking_test2.patch
          1 kB
          Matt Watson
        3. CAY_2242_FIX.patch
          6 kB
          Matt Watson

        Issue Links

          Activity

            People

              ntimofeev Nikita Timofeev
              mattraydub Matt Watson
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: