Erro no importe do arquivo csv

estou importando um arquivo csv mas ele aparece o erro abaixo.

java.lang.IllegalStateException: Transaction already active
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:56)
at com.dao.Pln0048rJpaDAO.merge(Pln0048rJpaDAO.java:72)
at com.principal.Monitoramento.csv(Monitoramento.java:177)
at com.principal.Monitoramento$1.run(Monitoramento.java:78)
java.lang.IllegalStateException: Transaction already active
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:56)
at com.dao.Pln0048rJpaDAO.merge(Pln0048rJpaDAO.java:72)
at com.principal.Monitoramento.csv(Monitoramento.java:177)
at com.principal.Monitoramento$1.run(Monitoramento.java:78)
javax.persistence.RollbackException: Error while committing the transaction
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:92)
at com.dao.Pln0048rJpaDAO.merge(Pln0048rJpaDAO.java:74)
at com.principal.Monitoramento.csv(Monitoramento.java:177)
at com.principal.Monitoramento$1.run(Monitoramento.java:78)
Caused by: javax.persistence.PersistenceException: org.hibernate.HibernateException: Flush during cascade is dangerous
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:80)
… 3 more
Caused by: org.hibernate.HibernateException: Flush during cascade is dangerous
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1191)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:404)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:75)
… 3 more
javax.persistence.RollbackException: Error while committing the transaction
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:92)
at com.dao.Pln0048rJpaDAO.merge(Pln0048rJpaDAO.java:74)
at com.principal.Monitoramento.csv(Monitoramento.java:177)
at com.principal.Monitoramento$1.run(Monitoramento.java:78)
Caused by: javax.persistence.PersistenceException: org.hibernate.HibernateException: Flush during cascade is dangerous
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:80)
… 3 more
Caused by: org.hibernate.HibernateException: Flush during cascade is dangerous
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1191)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:404)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:75)
… 3 more
java.lang.IllegalStateException: Transaction not active
at org.hibernate.ejb.TransactionImpl.rollback(TransactionImpl.java:103)
at com.dao.Pln0048rJpaDAO.merge(Pln0048rJpaDAO.java:77)
at com.principal.Monitoramento.csv(Monitoramento.java:177)
at com.principal.Monitoramento$1.run(Monitoramento.java:78)
javax.persistence.RollbackException: Error while committing the transaction
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:92)
at com.dao.Pln0048rJpaDAO.merge(Pln0048rJpaDAO.java:74)
at com.principal.Monitoramento.csv(Monitoramento.java:177)
at com.principal.Monitoramento$1.run(Monitoramento.java:78)
Caused by: javax.persistence.PersistenceException: org.hibernate.HibernateException: Flush during cascade is dangerous
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:80)
… 3 more
Caused by: org.hibernate.HibernateException: Flush during cascade is dangerous
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1191)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:404)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:75)
… 3 more
java.lang.IllegalStateException: Transaction not active
at org.hibernate.ejb.TransactionImpl.rollback(TransactionImpl.java:103)
at com.dao.Pln0048rJpaDAO.merge(Pln0048rJpaDAO.java:77)
at com.principal.Monitoramento.csv(Monitoramento.java:177)
at com.principal.Monitoramento$1.run(Monitoramento.java:78)

segue classe DAO

public void merge(Pln0048r pln0048r) {
try {
entityManager.getTransaction().begin();
entityManager.merge(pln0048r);
entityManager.getTransaction().commit();
} catch (Exception ex) {
ex.printStackTrace();
entityManager.getTransaction().rollback();
}
}

o erro na classe DAO é na linha "entityManager.getTransaction().begin();"
consegue me ajudar?

Se está usando, vc deve saber que o código acima inicia uma nova transação.
O erro ocorre qnd vc já tem uma transação aberta e tenta abrir uma nova.

tenta assim…

 if (!entityManager.getEntityManager().getTransaction().isActive()) {
      entityManager.getTransaction().begin();
 }

rodrigo… sei sim, mas minha dificuldade é fechar a transação antes de iniciar uma nova ou fechar depois de usar.
tentei um .Close mas não funcionou.

ardenghe

tentei usar mas da erro no getEntityManager()
segue erro…

cannot find symbol
symbol: variable getEntityManager
location: variable entityManager of type EntityManager

a transação n se fecha com close.
a conexao se fecha com close
a transação se encerra com commit ou rollback

então porque ele acusa uma transação aberta quando ele vai iniciar?

segue o codigo

public void merge(Pln0048r pln0048r) {
try {
entityManager.getTransaction().begin();
entityManager.merge(pln0048r);
entityManager.getTransaction().commit();
} catch (Exception ex) {
ex.printStackTrace();
entityManager.getTransaction().rollback();
}
}

ardenghe
sua sugestão era assim??

public void merge(Pln0048r pln0048r) {
try {
if (!entityManager.getTransaction().isActive()) {
entityManager.getTransaction().begin();
entityManager.getTransaction().commit();
}
entityManager.merge(pln0048r);
} catch (Exception ex) {
ex.printStackTrace();
entityManager.getTransaction().rollback();
}

}

Tenta assim…

 try {
        // aqui vc so inicia se nao estiver ativa... se ja estiver ativa ele inicia e ñ passa pelo if
        if (!entityManager.getTransaction().isActive()) {
        entityManager.getTransaction().begin();      
        }
      entityManager.merge(pln0048r);
      entityManager.getTransaction().commit();
      } catch (Exception ex) {
        ex.printStackTrace();
        entityManager.getTransaction().rollback();
    }

 }

vc só tem este código em todo o sistema que abre transação?

ardenghe

ele continua aparecendo o erro…

at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:62)
at com.dao.Pln0048rJpaDAO.merge(Pln0048rJpaDAO.java:73)
at com.principal.Monitoramento.csv(Monitoramento.java:174)
at com.principal.Monitoramento$1.run(Monitoramento.java:73)

mais esse

at org.hibernate.ejb.TransactionImpl.rollback(TransactionImpl.java:103)
at com.dao.Pln0048rJpaDAO.merge(Pln0048rJpaDAO.java:79)
at com.principal.Monitoramento.csv(Monitoramento.java:174)
at com.principal.Monitoramento$1.run(Monitoramento.java:73)

ai ele começa a importar o arquivo, mas só esta importando 389 linhas e da erro que eu estou tentando acessar a posição 3 do array, mas ele só tem 3 posições: 0, 1 e 2. Mas o arquivo esta completo com 16 posições e com 3952 linhas.

erro…
java.lang.ArrayIndexOutOfBoundsException: 3
at com.principal.Monitoramento.csv(Monitoramento.java:161)
at com.principal.Monitoramento$1.run(Monitoramento.java:73)

Rodrigo_Void
no projeto tem a opção de remover, list que abre a mesma transação.