openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From <cob...@windstream.net>
Subject Re: Re: Newly null fields not being persisted?
Date Fri, 07 Mar 2008 21:00:24 GMT
Michael,

Thank you, that solved it for me.  WOO-HOO!!!  Early weekend start!!

;)

Cheers,
Randy

> 
> From: "Michael Dick" <mikedd@apache.org>
> Date: 2008/03/07 Fri PM 02:39:28 CST
> To: users@openjpa.apache.org
> Subject: Re: Re: Newly null fields not being persisted?
> 
> Hi
> 
> I've seen this happen when an entity is serialized and deserialized. During
> the serialization process the State of the entity was lost. So when the
> entity was reattached OpenJPA couldn't differentiate between an unloaded
> field and one that was intentionally set to null.
> 
> To resolve the problem you can add the following property to persistence.xml
> :
> 
> <property name="openjpa.DetachState"
>                 value="fgs(DetachedStateField=true)" />
> 
> The real key here is the DetachedStateField=true part which instructs
> OpenJPA to save the State of the entity when it is serialized and
> deserialized.
> 
> This option needs to be in your persistence.xml when the entities are
> enhanced. If you use static enhancement via the PCEnhancer tool you'll have
> to re-run the tool after updating persistence.xml. If you don't use static
> enhancement the container will enhance your entities for you - so you'll
> just need to redeploy.
> 
> Hope this helps,
> -Mike
> 
> On Fri, Mar 7, 2008 at 2:28 PM, <cobbra@windstream.net> wrote:
> 
> > Yes, that's exactly what I am seeing, and perhaps I didn't give enough
> > detail...
> >
> > In my case, the EJB service fetches the entity, it gets detached when it
> > moves from the EJB container to the web tier, user updates the entity, pass
> > it back to the service where it's "merged"... the fields that were nulled
> > are not getting persisted.  It has to do with detaching the entity then
> > re-attaching it again.
> >
> > I've found a HACK (emphasis on HACK) to solve it in the interim..  I
> > basically take the detached entity, re-fetch the managed one, copy
> > properties from the detached to the managed entity, then let the managed
> > entity persist normally.  But it gets tedious when you're dealing with
> > entities with 30-40 attributes and you can't use the Commons copyProperties
> > because of version columns, etc. (fields that are restricted).
> >
> > If there is a better solution, I'd be more than happy to entertain it!
> >
> > Thanks!
> > Randy
> > >
> > > From: Tedman Leung <tedman@sfu.ca>
> > > Date: 2008/03/07 Fri PM 01:34:32 CST
> > > To: users@openjpa.apache.org
> > > Subject: Re: Newly null fields not being persisted?
> > >
> > > I reported this as a bug earlier and I never heard back, it still
> > occurs.
> > > A more detiled explanation of what I found is as follows  :
> > >
> > > - If you have a new entity with null fields, the fields will save as
> > null.
> > >
> > > - If you have an entity which is attached, you can nullify fields as
> > long
> > > as it persists itself. i.e. without you calling the merge method.
> > >
> > > - If you retrieve an entity and detach it, then null a field, then
> > > reattach it (with merge), it will not nullify the field.
> > >
> > >
> > > if anyone knows the code well enough to fix it or point me to the area
> > > where the logic of this is done that would be good.
> > >
> > >
> > >
> > > On Fri, Mar 07, 2008 at 01:28:40PM -0600, cobbra@windstream.net wrote:
> > > > All,
> > > >
> > > > I'm not sure if this is a problem in MY code or OpenJPA.  But, here
> > are the symptoms in WAS w/ EJB Feature pack:
> > > >
> > > > User enters data into a form that is backed by a managed OpenJPA
> > entity.  Entity gets persisted successfully.  User goes back to the same
> > page and nullifies one of the fields (i.e., deletes a value from one of
> > the fields in the form).  Entity gets persisted, but, the field that was
> > nulled out is not updated.
> > > >
> > > > Looking at the generated SQL in the WAS log, I see the first update
> > that added the data, but in the second update statement, the field that was
> > nulled is not included in the update (thus leaving data in the underlying
> > table).
> > > >
> > > > Is there a setting in OpenJPA that turns this off?  Or, could it (most
> > likely) be a problem in my code somewhere?
> > > >
> > > > Any suggestions on how I can track this down and eliminate it?
> > > >
> > > > Cheers!
> > > > Randy
> > > >
> > >
> > > --
> > >                                                            Ted Leung
> > >                                                            tedman@sfu.ca
> > >
> > > You know things are getting a little fishy when you're commenting out
> > > comments.
> > >
> >
> >
> 
> 


Mime
View raw message