2015-04-21 2 views
0

Я использую hibernate jpa для выполнения пакетного обновления.Hibernate Jpa пакетная вставка не работает

Не содержит никаких ошибок или исключений, но транзакционный откат каждый раз дает.

2015-04-21 16:30:33,548 ERROR [org.jboss.as.ejb3] (Thread-344 (HornetQ-client-global-threads-462057890)) javax.ejb.EJBTransactionRolledbackException: no transaction is in progress 

Это моя партия код обновления

getEm().getTransaction().begin(); 
    System.out.println("transaction started--------------"); 
    try{  
    for(Receipt ReceiptEntity : arrReceiptEntity){ 


     getEm().persist(ReceiptEntity); 


    } 
    getEm().getTransaction().commit(); 
    System.out.println("commited"); 
    }catch(Exception exception){ 
     System.out.println("error----------------------------------------------------------------------"); 
     if(getEm().getTransaction().isActive()) 
      getEm().getTransaction().rollback(); 
      LOG.error(exception); 
    }finally 
    { 
     getEm().flush(); 
     getEm().clear(); 
     getEm().close(); 
    } 

Я использую Postgres сервер 9.4.1 Пожалуйста, помогите мне понять, что я делаю неправильно. Я проверил другие подобные должности, но ничего не помогло.

UPDATE: я получил решение: Проблема была я промывочной уже разгоряченное transaction.And, таким образом, он не давал мне никаких сделки по ошибке прогресса вместе с одним я разместил above.So я просто Убрана `getEm().промывать(); и getEm(). clear(); из блока finally и он начал работать :)

+0

ли вы пытаетесь добавить точки останова в вашой IDE (как затмение) и посмотреть на какую линию он не ? – Jay

+0

Thx для вопроса и обновления, пожалуйста, отправьте сообщение (и примите) его как ответ. – xerx593

+0

getEm(). GetTransaction(). Commit(); кода уже сбросили данные. – BalaajiChander

ответ

0

У меня есть решение: проблема заключалась в том, что я смывал уже покрасневшую транзакцию. И, таким образом, это дало мне ошибку с транзакцией вместе с той, которую я опубликовал выше. я просто удалил getEm().flush(); and getEm().clear(); от окончательно блокировать и он начал работать :)

Надеется, что это поможет другим ..

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