Some quick tests show that no persist() or merge() should be necessary
to update an entity inside a persistent context. I tested with Hibernate
and Amber as persistence providers and in both cases, nothing was
necessary. That was using Resin 3.1.5 and RESOURCE_LOCAL as transaction
type, which means that the problem might be with the container managed
Daniel López escribió:
> AFAIK, using merge should not be necessary unless the entity has been
> updated outside a "persistent context" and then needs to be synchronised
> back with the DB contents. persist() is just for new entities so reading
> the docs, updating an entity inside a persistent context should require
> no action. Unless an exception is thrown, of course ;).
> I'm going to do some tests...
> Matt Johnston escribió:
>> I think you will need to use either the persist() or merge() methods of
>> the EntityManager in order to save your data to the database. In your
>> case since you are updating an existing record, you will need to use:
>> Riccardo Cohen wrote:
>>> I used to play with entity ejb with resin 3.0 with no problem. Now in
>>> 3.1.5 I have this code :
>>> @PersistenceContext(name="public") private EntityManager m_manager;
>>> public boolean set_homeinfo(int id_user,String title)
>>> boolean success=false;
>>> Query hqr=m_manager.createQuery("select h from homeinfo h where
>>> List<homeinfo> hitems = (List<homeinfo>)hqr.getResultList();
>>> if (hitems.size()==1)
>>> homeinfo homeobj=hitems.get(0);
>>> System.out.println("title was "+homeobj.getTitle());
>>> The select works all right, but the "title" field is never modified. I
>>> added finer info on sql to see database requests in log, and there is no
>>> "update". Did I miss something ?
>>> I looked at the resin amber tutorials, but there are only "select"
>>> samples, I did not see "insert" and "update" samples... I remember
>>> problems like this with 3.0 when the entity bean was reused, it was not
>>> saved, but here it is not the case.
>>> Thanks for any help.
resin-interest mailing list