openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dianne Richards (JIRA)" <j...@apache.org>
Subject [jira] Updated: (OPENJPA-885) Support clear methods on EntityManager, including new CascadeType.CLEAR
Date Thu, 19 Mar 2009 16:49:50 GMT

     [ https://issues.apache.org/jira/browse/OPENJPA-885?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Dianne Richards updated OPENJPA-885:
------------------------------------

    Attachment: cascadeTestPatch.txt

I think there are 2 issues here:
  1 - whether or not to the cascade compatibility option is needed
  2 - whether or not the options loaded, fetch-group, and all are handled

Although these may be interrelated, let's discuss them individually at first.

For the cascade compatibility option question, we first have to agree on what the old behavior
does. I have created a simple test case for this, with the new patch cascadeTestPatch.txt.
The cascade relationship of the entities is:
   Entity1 to Entity2 - ALL
   Entity2 to Entity3 - PERSIST only

When you run this test on an openjpa version without my changes, you'll see that all entities
are detached when detach(e1) is run. So, it automatically cascades. (Note: I know this is
with all entities loaded. Again, I'll address that later.)

Second, what would the spec expect in this scenario with the new clear(Object) option. Here's
what the spec says in section 3.2.6:

The semantics of the clear operation, applied to an entity X are as follows:
•If X is a managed entity, the clear operation causes it to become detached. The clear operation
is cascaded to entities referenced by X, if the relationships from X to these other entities
is annotated with the cascade=CLEAR or cascade=ALL annotation element value. Entities which
previously referenced X will continue to reference X.
•If X is a new or detached entity, it is ignored by the clear operation.
•If X is a removed entity, the clear operation is cascaded to entities referenced by X,
if the relationships
from X to these other entities is annotated with the cascade=CLEAR or cascade=
ALL annotation element value. Entities which previously referenced X will continue to reference
X. Portable applications should not pass removed entities

It seems to me that bullet 1 implies that the cascade should ONLY occur if cascade=CLEAR or
or cascade=ALL. Therefore, in my test case, Entity3 should NOT be detached. So, that needs
to be the default behavior. In order to provide backward compatibility for the pre-existing
detach behavior, we need to provide the cascadeWithDetach compatibility option.

In order to address item 2 above, I need to write some more test cases. (Admittedly I should
have done that.) I'll address that in a subsequent post.

> Support clear methods on EntityManager, including new CascadeType.CLEAR 
> ------------------------------------------------------------------------
>
>                 Key: OPENJPA-885
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-885
>             Project: OpenJPA
>          Issue Type: Sub-task
>    Affects Versions: 2.0.0
>            Reporter: Dianne Richards
>            Assignee: Dianne Richards
>             Fix For: 2.0.0
>
>         Attachments: cascadeTestPatch.txt, CompatibilityProblemPatch.txt, detachCodePatch.txt,
detachTestPatch.txt, patch.txt
>
>
> Support the 2.0 new  EntityManager clear() methods. Also support the new CascadeType.CLEAR.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message