you shouldn't change the pk if you want to do an update..
but if you are with a new object you must attach the object to the session.
so.. the sequence be like this:

if you know the pk of the object

Object o=em.find(Object.class,pk);
then change/ set new values (not the pk)

o=em.merge(o);



On 7/31/07, Tim Hanson <[EMAIL PROTECTED]> wrote:
> I somewhat confused by the behaviour of merge(). It seems that if I just
> new up an entity and set its fields, including the primary key, then I
> call em.merge(), INSERT is called instead of UPDATE. Is this true?
>
> I am using JPA with JSF. I have a backing bean with a reference to an
> entity. When I try to edit the entity, on save JSF fills in the fields
> of the entity from the request and then I call em.merge(), but like I
> said, that always calls INSERT. The only way I was able to make this
> work was by scoping the backing bean to the session, such that my entity
> was alive between calls. That seems like a strange thing to do.
>
> The other possibility would be to find the entity and then copy the
> fields. That also seems like a hack.
>
> I guess if merge() is not really UPDATE, is there something else I can
> call?
>
> Thanks,
> Tim
>
> Notice:  This email message, together with any attachments, may contain 
> information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated 
> entities,  that may be confidential,  proprietary,  copyrighted  and/or 
> legally privileged, and is intended solely for the use of the individual or 
> entity named in this message. If you are not the intended recipient, and have 
> received this message in error, please immediately return this by email and 
> then delete it.
>


-- 
 - Salatino Mauricio -

Reply via email to