2015-12-25 66 views
0

我試圖向DB插入實體。我有BaseJpaDao類:錯誤javax.persistence.TransactionRequiredException:沒有事務正在進行

@Transactional(Transactional.TxType.REQUIRED) 
public abstract class BaseJpaDao<E> implements BaseDao<E> { 

    protected Class<?> entityClass; 
    private EntityManager em; 

    public BaseJpaDao(Class<?> entityClass) { 
     this.entityClass = entityClass; 
     em = Persistence.createEntityManagerFactory("COLIBRI").createEntityManager(); 
    } 

    @Override 
    public E persist(E e) { 
     em.persist(e); 
     return e; 
    } 
... 
@Override 
    public void flush() { 
     em.flush(); 
    } 

而且我有子類擴展BaseJpaDao

public class CallJpaDao extends BaseJpaDao<Calls> implements CallDao { 

和方法

@Override 
    public void insertCalls(List<Calls> callsList) { 
     for (Calls call : callsList) { 
      try { 
       persist(call); 
       flush(); 
      } catch (Exception e) { 
       logger.log(Level.FINEST, "Exception in task time={0}. Exception message = {1}.", new Object[]{call.getDate(), e.getMessage()}); 
      } 
     } 
    } 

我試圖堅持和沖洗實體,但我有一個錯誤:

javax.persistence.TransactionRequiredException: no transaction is in progress 

編輯

我上改變依賴於

<dependency> 
      <groupId>javax.ejb</groupId> 
      <artifactId>javax.ejb-api</artifactId> 
      <version>3.2</version> 
     </dependency> 

它沒有幫助。

我添加@Transactional註釋子類 - 沒有幫助

+0

見http://stackoverflow.com/questions/1801828/hibernate-jpa-and-spring- javax-persistence-transactionrequiredexception -no-tran和http://stackoverflow.com/questions/23314953/hibernate-spring-javax-persistence-transactionrequiredexception-no-transacti 確保您的應用程序是註釋驅動的。谷歌如何用你的Spring版本來做到這一點。 – dseibert

+0

我不使用SPRING我使用JavaEE EJB – user5620472

+0

有趣。感謝那些信息。檢查下面的鏈接。這可能是由於您的EJB版本的限制。看起來您的應用程序似乎忽略了@Transactional註釋,並且需要另一個註釋,或者您需要重新考慮如何使用EntityManager。 http://stackoverflow.com/questions/27274216/using-transactional-with-ejbs – dseibert

回答

0

更改@Transactional到:

@Transactional(Transactional.TxType.REQUIRES_NEW) 
+0

這沒有幫助 – user5620472

+0

似乎兩個人都應該在調用方法中提供一個新的事務範圍。 http://docs.oracle.com/javaee/7/api/javax/transaction/Transactional.TxType.html – dseibert

+1

嘗試使用@Transactional註釋孩子類 –

相關問題