Hello.
I think "Nullify" is a better default than "No Action" as it matches
what I want to do in most cases. I sometimes use "Cascade", but it is
not a good default value :)
- Tore.
On Dec 3, 2006, at 20:47, Andrus Adamchik wrote:
Just like with the outer joins discussion that you initiated some
time ago, the answer here is that until a smart enough algorithm is
designed to infer *correct* defaults for all combinations of
relationships, Cayenne absolves itself from modifying the object
graph, leaving it up to the user. Hence "No Action".
On the other hand "Nullify", while not an ideal default, is
probably the closest to "forcing [...] to consider [...] problem
and solve it upfront" paradigm, as it will result in
RuntimExceptions when used gratuitously. So maybe you are right
about it.
Anybody else has thoughts on that?
Andrus
On Dec 3, 2006, at 9:28 PM, Øyvind Harboe wrote:
I have discovered that I assumed that "Nullify" was default.
Reading the wiki page below, I miss an explanation of why "No action"
is default or why "No action" exists at all. I would have preferred
some default that either "did what I expected" or forced me to
consider this problem and solve it upfront(the obvious cost being
that
one is forced to learn another concept upfront).
Can "No action" be overridden by subclassing to do something
reasonable?
What worries me is that "No action" is a bug waiting to happen. It
certainly bit me(I've screwed this up in three Cayenne projects
before
I learned of the the default delete rule). The precise behavior of
"No
action" is somewhat random.
- Delete + commit => relationship might exists depending on how many
objects are cached in Cayenne.
- Delete + commit + logout(create new DataContext) => relationship no
longer exists(same as above w/"Nullify")
http://cwiki.apache.org/confluence/display/CAYDOC/Delete+Rules
I was also somewhat surprised that validateForDelete() does not take
the deleteRule="Deny" into account and that the exception only occurs
when deleteObject() is invoked.
--
Øyvind Harboe
http://www.zylin.com