Thanks Kevin for your prompt response.
Here is a simple use case we have:
within an EJB , we have the following method:
public UserProfile updateUserProfile(UserProfile userProfile) {
return getProfileDAO().update(userProfile);
}
when this method is called, the input parameter has all of the values
including the key, but we got a runtime exception because it's trying to
insert userProfile into database.
org.apache.openjpa.persistence.PersistenceException: ORA-00001: unique
constraint (VPDNGDITR17.PK_SECURITY_USER_PROFILE) violated FailedObject:
prepstmnt 1645109774 INSERT INTO SECURITY_USER_PROFILE (OID,
MODIFIED_BY_USER, ........
After we change the code to the following, it works fine:
public UserProfile updateUserProfile(UserProfile userProfile) {
UserProfileDAO profileDAO = getProfileDao();
UserProfile tmpUserProfile =
profileDAO.getUserProfile(userProfile.getName());
PropertyUtils.copyProperties(tmpUserProfile, userProfile);
return getProfileDao().update(tmpUserProfile);
}
Here is the update method of ProfileDAO:
public T update(T entity)
{
getEntityManager().merge(entity);
}
When the input parameter has nested object, even the above approach won't
work any more, because PropertyUtils.copyProperties will make the nested
object not managed anymore.
Thanks a lot
Kevin Sutter wrote:
>
> jackson12,
> Could you be more specific with your example? We have various testcases
> that do this exact process of merging in non-managed entities (without
> first
> retrieving the entity from the DB). Could you further explain your test
> scenario and what results you are getting?
>
> Thanks,
> Kevin
>
> On Dec 7, 2007 11:12 AM, jackson12 <[EMAIL PROTECTED]> wrote:
>
>>
>> Hi, We are trying to migrate our JBoss EJB3 application to IBM websphere
>> with
>> OpenJPA. We noticed in OpenJPA, the merge method does not work with
>> non-managed entity. You have to retrieve the entity from DB, make some
>> changes and then call merge. But with JBoss's implementation, you don't
>> have
>> to retrieve the entity from DB first. the merge method works fine for
>> non-managed entity.
>>
>> Is there anyway for OpenJPA to work the same way as JBoss's JPA
>> implementation on this part? or is there a way in OpenJPA to make a
>> non-managed entity managed?
>>
>> thanks in advance
>> --
>> View this message in context:
>> http://www.nabble.com/merge-only-works-with-managed-entity-tf4963245.html#a14216438
>> Sent from the OpenJPA Developers mailing list archive at Nabble.com.
>>
>>
>
>
--
View this message in context:
http://www.nabble.com/merge-only-works-with-managed-entity-tf4963245.html#a14217307
Sent from the OpenJPA Developers mailing list archive at Nabble.com.