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

Change default delete rule for runtime relationship

    Details

    • Type: Improvement
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Core Library
    • Labels:
      None

      Description

      It should be good to change default delete rule of runtime relationship from NO_ACTION to NULLIFY. It will protect us from bogus references in dependent objects without reverse relationships.

      Suppose we have such model:

      • ARTIST(ID, NAME) ==> Artist(name, paintings)
      • PAINTING(ID, NAME, ARTIST_ID, GALLERY_ID) ==> Painting(name, artist) // no reverse to Gallery
      • GALLERY(ID, NAME) ==> Gallery(name, paintings)

      Delete rule of relationship Artist-toMany-Paintings is set to CASCADE. Expect that after deleting Artist corresponding Paintings will be deleted too.. and also deleted from galleries thanks to reverse runtime relationship Painting-toOne-Gallery created by Cayenne.

      After adding data to database (print result of SelectQuery):

      • Artists: Picasso
      • Paintings: "Girl Reading at a Table" by Picasso
      • Galleries: Metropolitan Museum of Art: ["Girl Reading at a Table" by Picasso]

      After deleting object Picasso (print result of SelectQuery):

      • Artists:
      • Paintings:
      • Galleries: Metropolitan Museum of Art: ["Girl Reading at a Table" by null] // that is BIZARRE!

      This happens because when cascade delete comes to painting Girl it detects relationship with delete rule NO_ACTION. And so gallery stays with bogus reference.

      PS. After recreation of ObjectContext all bogus objects of course dissapear because they do not exist in database.

        Activity

        Hide
        revenforv Pavel Dyadych added a comment - - edited

        Attached sample maven project representing the problem

        Show
        revenforv Pavel Dyadych added a comment - - edited Attached sample maven project representing the problem

          People

          • Assignee:
            Unassigned
            Reporter:
            revenforv Pavel Dyadych
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:

              Development