openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rick Curtis (JIRA)" <j...@apache.org>
Subject [jira] Commented: (OPENJPA-1644) Null field values after calling EntityManager.remove()
Date Mon, 11 Oct 2010 15:51:32 GMT

    [ https://issues.apache.org/jira/browse/OPENJPA-1644?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12919877#action_12919877
] 

Rick Curtis commented on OPENJPA-1644:
--------------------------------------

I did some research as to why we were clearing out the fields of an Entity after deleting
it and it appears that it is something that has been with us from the JDO days. Per the JDO
spec: 

"A persistent-deleted instance transitions to transient at commit. During the transition,
its persistent fields are written with their Java default values...."The net of that is that
after an instance is deleted, the provider must clear out all fields of that Entity.

The JPA 2.0 spec states something along these lines :  "After an entity has been removed,
its state (except for generated state) will be that of the entity at the point at which the
remove operation was called." I'll be committing changes shortly to support the JPA spec.



> Null field values after calling EntityManager.remove()
> ------------------------------------------------------
>
>                 Key: OPENJPA-1644
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1644
>             Project: OpenJPA
>          Issue Type: Bug
>    Affects Versions: 1.2.2, 2.0.0
>            Reporter: Leo Isiah Sambayan
>            Assignee: Rick Curtis
>         Attachments: OPENJPA-1644.patch
>
>
> Fields of an entity instance are nulled after calling EntityManager.remove() on an instance.
> For example, I have an entity class named User. I persist and then remove an instance
of User.
> //
> // EntityManager em is initialized before the following code
> //
> em.getTransaction().begin();
> User user = new User();
> user.setName("name1");
> em.persist(user);
> em.getTransaction().commit();
> System.out.println(user.getName); // will print out name1
> em.getTransaction().begin();
> em.remove(user);
> em.getTransaction().commit();
> System.out.println(user.getName); // will print out null (oh no!) 
> After I persist and remove the same instance of User, it's fields became null. I believe
this shouldn't be the case as Section "3.2.3 Removal" of the 2.0 spec states:
> "After an entity has been removed, its state (except for generated state) will be that
of the entity at the point at which the remove operation was called."

-- 
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