2013-12-04 2 views
1

поэтому я этот код здесьсделка не активна в данный момент

User us = new User(); 
      us.setId(id1); 
      us.setUsername(userNameTextField.getText()); 
      us.setPassowrd(passwordFormattedTextField.getText()); 
      us.setLevel(levelComboBox.getSelectedItem().toString()); 
      us.setEmpid(getCurrentEmp()); 
      getCurrentEmp().getUserCollection().add(us); 
      em.getTransaction().begin();    
      em.persist(getCurrentEmp()); 
      em.flush(); 
      em.getTransaction().commit(); 

, но когда я пытаюсь совершить я получаю эту ошибку

Exception Description: No transaction is currently active 
at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionWrapper.throwCheckTransactionFailedException(EntityTransactionWrapper.java:87) 
at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionWrapper.checkForTransaction(EntityTransactionWrapper.java:50) 
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.checkForTransaction(EntityManagerImpl.java:2015) 
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:846) 

и я не получаю у, так как я назвал экземпляр EntityManager следующим

em = emi.getInstance(); 

из этого класса

public class EmInstance { 
EntityManager em; 
public EntityManager getInstance(){ 
em = Persistence.createEntityManagerFactory("samplePU").createEntityManager(); 
return em; 
} 

}

Мой вопрос, как я могу сделать транзакцию активной всякий раз, когда я хочу использовать его e.i при совершении, обновление или любой другой процесс сделки. Я использую eclipselink и его настольное приложение

+0

Какую версию EclipseLink вы используете, и вы можете попробовать последнее, если вы еще не? – Chris

+0

Исключение вызвано флешем, который может быть неявным флешем, вызванным поставщиком непрерывности; вы можете попытаться перенести это getTransaction(). begin() в начало метода, чтобы убедиться, что транзакция активна в любом месте JPA. – Gimby

ответ

3

Вы уверены, что вызов em.getTransaction() эти два раза дает вам ту же самую транзакцию? Попробуйте с:

EntityTransaction etx = em.getTransaction(); 
etx.begin(); 
... 
etx.commit(); 

 Смежные вопросы

  • Нет связанных вопросов^_^