You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Pavel Dyadych (JIRA)" <ji...@apache.org> on 2012/06/05 18:24:22 UTC
[jira] [Created] (CAY-1710) Change default delete rule for runtime
relationship
Pavel Dyadych created CAY-1710:
----------------------------------
Summary: Change default delete rule for runtime relationship
Key: CAY-1710
URL: https://issues.apache.org/jira/browse/CAY-1710
Project: Cayenne
Issue Type: Improvement
Components: Core Library
Reporter: Pavel Dyadych
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 cascading 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.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (CAY-1710) Change default delete rule for runtime
relationship
Posted by "Pavel Dyadych (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CAY-1710?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pavel Dyadych updated CAY-1710:
-------------------------------
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.
was:
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 cascading 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.
> Change default delete rule for runtime relationship
> ---------------------------------------------------
>
> Key: CAY-1710
> URL: https://issues.apache.org/jira/browse/CAY-1710
> Project: Cayenne
> Issue Type: Improvement
> Components: Core Library
> Reporter: Pavel Dyadych
> Attachments: helloworld-mapping.zip
>
>
> 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.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Comment Edited] (CAY-1710) Change default delete rule for
runtime relationship
Posted by "Pavel Dyadych (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CAY-1710?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13289519#comment-13289519 ]
Pavel Dyadych edited comment on CAY-1710 at 6/9/12 11:56 AM:
-------------------------------------------------------------
Attached sample maven project representing the problem
was (Author: revenforv):
Sample maven project representing the problem
> Change default delete rule for runtime relationship
> ---------------------------------------------------
>
> Key: CAY-1710
> URL: https://issues.apache.org/jira/browse/CAY-1710
> Project: Cayenne
> Issue Type: Improvement
> Components: Core Library
> Reporter: Pavel Dyadych
> Attachments: helloworld-mapping.zip
>
>
> 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.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (CAY-1710) Change default delete rule for runtime
relationship
Posted by "Pavel Dyadych (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CAY-1710?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pavel Dyadych updated CAY-1710:
-------------------------------
Attachment: helloworld-mapping.zip
Sample maven project representing the problem
> Change default delete rule for runtime relationship
> ---------------------------------------------------
>
> Key: CAY-1710
> URL: https://issues.apache.org/jira/browse/CAY-1710
> Project: Cayenne
> Issue Type: Improvement
> Components: Core Library
> Reporter: Pavel Dyadych
> Attachments: helloworld-mapping.zip
>
>
> 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 cascading 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.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira