Erro no importe do arquivo csv

11 respostas
java
T

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?

11 Respostas

Rodrigo_Void

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.

ardenghe

tenta assim…

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

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.

T

ardenghe

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

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

Rodrigo_Void

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

T

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();

}

}
T

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();

}
}
ardenghe

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();
    }

 }
Rodrigo_Void

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

T

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)
T

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

Criado 10 de julho de 2018
Ultima resposta 12 de jul. de 2018
Respostas 11
Participantes 3