Hi

I've got an EJB:

  | 
  | @Stateless
  | @TransactionAttribute(TransactionAttributeType.SUPPORTS)
  | public class AirportDaoBean implements AirportDaoLocal, AirportDaoRemote {
  | 
  |     @PersistenceContext
  |     private EntityManager manager;
  |     
  |     @Override
  |     public void createAirport(Airport airport) {
  |             manager.persist(airport);
  |     }
  | 
  |     @Override
  |     public Airport getAirportById(int id) {
  |             return manager.find(Airport.class, id);
  |     }
  | 
  |     @Override
  |     public List<Airport> getAll() {
  |             return manager.createQuery("from Airport order by 
city.country.name").getResultList();
  |     }
  | 
  | }
  |     
  | 
  | 

As you can see I configured it with SUPPORTS transaction attribute, so when 
there is a transaction all methods in my bean will use it, when there is no 
transaction context then bean wouldn't begin a new one. So my question is: why 
i get the exception:

  | 
  | Caused by: javax.persistence.TransactionRequiredException: EntityManager 
must be access within a tra
  | nsaction
  |         at 
org.jboss.ejb3.entity.ManagedEntityManagerFactory.verifyInTx(ManagedEntityManagerFactory.
  | java:150)
  |         at 
org.jboss.ejb3.entity.TransactionScopedEntityManager.persist(TransactionScopedEntityManag
  | er.java:174)
  |         at 
master.airport.logic.impl.AirportDaoBean.createAirport(AirportDaoBean.java:24)
  |         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |         at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |         at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |         at java.lang.reflect.Method.invoke(Method.java:597)
  |         at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
  |         at 
org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
  |         at 
org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor
  | .java:63)
  |         at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |         at 
org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedE
  | ntityManagerIntercepto
  |     
  | 


Regards
Adam

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4050752#4050752

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4050752
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to