我試圖向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
註釋子類 - 沒有幫助
見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
我不使用SPRING我使用JavaEE EJB – user5620472
有趣。感謝那些信息。檢查下面的鏈接。這可能是由於您的EJB版本的限制。看起來您的應用程序似乎忽略了@Transactional註釋,並且需要另一個註釋,或者您需要重新考慮如何使用EntityManager。 http://stackoverflow.com/questions/27274216/using-transactional-with-ejbs – dseibert