[
https://issues.apache.org/jira/browse/OPENJPA-453?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12714099#action_12714099
]
Craig Russell commented on OPENJPA-453:
---------------------------------------
It's probably useful to review the APIs and what they are intended for.
Evict is intended to clear the persistent values of an instance so that they
can be cleanly garbage collected. So all the persistent values are reset to
their Java default values. This reduces the number of references to other
instances. But the internal reference to the persistence context remains in the
evicted instance. If the application wants to refresh the instances, it can.
Embedded instances have no identity so they cannot be used without their
owners. When evicting owners, the fields that reference the embedded instances
are cleared so the embedded instances are left floating. If the owner is
subsequently refreshed, new embedded instances are created from datastore
values and attached to the owner.
Embedded instances behave mostly like transient instances with the small
additional behavior that they track changes made to themselves while owned.
The JDO spec doesn't discuss the behavior of embedded instances with regard to
evict or isXXX methods. It doesn't discuss whether the instances themselves are
persistent although they have no persistent identity.
The attached test case doesn't demonstrate the NullPointerException, does it?
If you can demonstrate NPE, we can fix that.
There's a discussion on the [email protected] mailing list that might be of
interest to folks here. The proposal is to treat embedded objects as transient
for the purposes of life cycle interrogatives and APIs. So
isPersistent(embedded_instance) would return false just like a transient
instance.
Please see http://markmail.org/search/?q=jdo%20evict%20embedded
> Evicting embedded object nullifies statemanager
> -----------------------------------------------
>
> Key: OPENJPA-453
> URL: https://issues.apache.org/jira/browse/OPENJPA-453
> Project: OpenJPA
> Issue Type: Bug
> Environment: Kodo 4.1.4, Ms sql server 2005, jTDS 1.2, jdk 1.6
> Reporter: Christiaan
> Attachments: openJPATestCase.zip, TestCaseEvictEmbedded.zip
>
>
> I am noticing the following behaviour: If evict() is called on an embedded
> object the statemanager is nullified which is in contrast to non-embedded
> objects. Subsequently, calling JDOHelper.getPersistenceManager() on the
> evicted embedded object returns null. Is this the correct behaviour?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.