[ http://issues.apache.org/jira/browse/OPENJPA-43?page=all ]

Marc Prud'hommeaux resolved OPENJPA-43.
---------------------------------------

    Resolution: Invalid

This is actually a known and intractible limitation: we are not able to 
intercept internal modifications for opaque types or arrays. So for those 
types, if OpenJPA is to detect that they were changed, they need to be re-set 
in their owning objects. E.g., in addition to doing:

myPC.getSomeBlob().someInternalField++;

you should also do:

myPC.setSomeBlob(myPC.getSomeBlob());

That should be sufficient to mary it "dirty". Alternately, you can use the 
OpenJPAEntityManager.dirty() method to explicitly mark the field dirty.

> update of a persistent field using a @Lob annotation is not being marked dirty
> ------------------------------------------------------------------------------
>
>                 Key: OPENJPA-43
>                 URL: http://issues.apache.org/jira/browse/OPENJPA-43
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>            Reporter: David Wisneski
>
> An entity has a persistent field which is a serialable class annotated with 
> @Lob.  I am able to 
> create and persist instances of this entity and field.  But when the entity 
> is retrieved and the 
> field is updated, the update is not written back at commit.
> @Entity
>  class Employee {
>   @Id  int id;
>   @Lob  Address home;
> class Home implements Serializable {
>     String street 
>   EntityManager em =
>   em.getTransaction().begin();
>   Employee e = em.find(Employee.class, 1);
>   Address home = e.getHome();
>   home.setStreet("123 New Avenue");
>   e.setHome(e);
>   em.getTransaction().commit();   <--  the update to home address does not 
> occur.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to