On Mar 10, 2008, at 1:29 AM, Riccardo Cohen wrote:

> Thanks a lot, I understand that I need a transaction now, while before
> it could work without this... I have no idea of how to do that.
>
> I noticed that in the doc of amber
> (http://caucho.com/resin/doc/amber.xtp) there was a
> @TransactionAnnotation but this makes a syntax error !
> Thanks to eclipse I found a @TransactionAnn, I added it at the  
> beginning
> of my function definition, but this does not change (no update  
> generated)

It should be @TransactionAttribute.  I'm fixing the docs.

The @TransactionAttribute is the easiest method.  You need to put it  
on a Resin-IoC-aware object, e.g. a <bean> or an EJB stateless bean or  
a servlet.  If you put it on an arbitrary class, it won't do anything.

You can also use UserTransaction to do essentially the same thing:

class MyFoo {
   @In UserTransaction _ut;

   void myStuff()
   {
     _ut.begin();
     try {
       ...
     } finally {
       ut.commit();
     }
  }

That's essentially identical to

   @TransactionAttribute void myStuff()
   {
     ...
   }

If you turn logging level="fine", you'll see the transaction begin()/ 
commit().  So you can use the log to make sure the transactions are  
working properly.

-- Scott
>
>
> Is there any doc about this ?
> Thanks
>
> Daniel López wrote:
>> Hi again,
>>
>> 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
>> transactions.
>>
>> S!
>> D.
>>
>> 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...
>>>
>>> S!
>>> D.
>>>
>>> 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:
>>>>
>>>> m_manager.merge(homeobj)
>>>>
>>>>
>>>> Matt
>>>>
>>>> Riccardo Cohen wrote:
>>>>> Hi
>>>>> 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
>>>>> h.id_user="+id_user);
>>>>>     List<homeinfo> hitems = (List<homeinfo>)hqr.getResultList();
>>>>>     if (hitems.size()==1)
>>>>>     {
>>>>>       homeinfo homeobj=hitems.get(0);
>>>>>       System.out.println("title was "+homeobj.getTitle());
>>>>>       homeobj.setTitle(title);
>>>>>       success=true;
>>>>>     }
>>>>>     return(success);
>>>>>   }
>>>>>
>>>>> 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
>> resin-interest@caucho.com
>> http://maillist.caucho.com/mailman/listinfo/resin-interest
>>
>
> -- 
> Très cordialement,
>
> Riccardo Cohen
> -------------------------------------------
> Articque
> http://www.articque.com
> 149 av Général de Gaulle
> 37230 Fondettes - France
> tel : 02-47-49-90-49
> fax : 02-47-49-91-49
>
>
> _______________________________________________
> resin-interest mailing list
> resin-interest@caucho.com
> http://maillist.caucho.com/mailman/listinfo/resin-interest



_______________________________________________
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest

Reply via email to