cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tore Halset <hal...@pvv.ntnu.no>
Subject Re: Delete rules
Date Sun, 03 Dec 2006 21:04:44 GMT
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
>>
>


Mime
View raw message