Olá Pessoal, estou tentando salvar um objeto no banco Mysql com o Hibernate.
Porém quando eu preencho os dados na tela de cadastro eu recebo um erro dizendo que a transação já está ativa
Obs. Percebi que quando eu requisito a url no navegador, o console mostra um sql gerado pelo hibernate. (Apenas requisistando a página)
Outra observação é que a listagem dos objetos já cadastrados funciona normalmente.
(Inclusive a página de cadastro estava funcionando pois foi assim que eu inseri os dados) deu esse erro derepente… já desliguei o pc troquei a versão do tomcat e nada…
Erro no Navegador
HTTP Status 500 - java.lang.IllegalStateException: Transaction already active
type Exception report
message java.lang.IllegalStateException: Transaction already active
description The server encountered an internal error that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: java.lang.IllegalStateException: Transaction already active
javax.faces.webapp.FacesServlet.service(FacesServlet.java:671)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
javax.faces.el.EvaluationException: java.lang.IllegalStateException: Transaction already active
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter. java:101)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
javax.faces.component.UICommand.broadcast(UICommand.java:315)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
java.lang.IllegalStateException: Transaction already active
org.hibernate.jpa.internal.TransactionImpl.begin(TransactionImpl.java:42)
com.gregory.modelo.dao.FuncionarioDao.save(FuncionarioDao.java:21)
com.gregory.modelo.beans.FuncionarioBean.grava(FuncionarioBean.java:25)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.apache.el.parser.AstValue.invoke(AstValue.java:279)
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter. java:87)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
javax.faces.component.UICommand.broadcast(UICommand.java:315)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.72 logs.
Erro no Console
out 30, 2016 8:34:12 PM com.sun.faces.lifecycle.InvokeApplicationPhase execute
WARNING: #{funcionarioBean.grava}: java.lang.IllegalStateException: Transaction already active
javax.faces.FacesException: #{funcionarioBean.grava}: java.lang.IllegalStateException: Transaction already active
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.faces.el.EvaluationException: java.lang.IllegalStateException: Transaction already active
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java: 101)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
... 27 more
Caused by: java.lang.IllegalStateException: Transaction already active
at org.hibernate.jpa.internal.TransactionImpl.begin(TransactionImpl.java:42)
at com.gregory.modelo.dao.FuncionarioDao.save(FuncionarioDao.java:21)
at com.gregory.modelo.beans.FuncionarioBean.grava(FuncionarioBean.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.el.parser.AstValue.invoke(AstValue.java:279)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java: 87)
... 28 more
out 30, 2016 8:34:12 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/TimeControl] threw exception [java.lang.IllegalStateException: Transaction already active] with root cause
java.lang.IllegalStateException: Transaction already active
at org.hibernate.jpa.internal.TransactionImpl.begin(TransactionImpl.java:42)
at com.gregory.modelo.dao.FuncionarioDao.save(FuncionarioDao.java:21)
at com.gregory.modelo.beans.FuncionarioBean.grava(FuncionarioBean.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.el.parser.AstValue.invoke(AstValue.java:279)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java: 87)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
-----------------------Classe Funcionario Bean-----------------------------------
package com.gregory.modelo.beans;
import java.util.List;
import javax.faces.bean.ManagedBean;
import com.gregory.modelo.Funcionario;
import com.gregory.modelo.dao.FuncionarioDao;
@ManagedBean
public class FuncionarioBean {
//Variáveis...
private FuncionarioDao dao = new FuncionarioDao();
private List<Funcionario> funcionarios = this.listaTodos();
public Funcionario getFuncionario() {
return funcionario;
}
private Funcionario funcionario = new Funcionario();
public void grava(){
dao.save(funcionario);
}
public List<Funcionario> listaTodos(){
return dao.returnAll();
}
public List<Funcionario> getFuncionarios() {
return funcionarios;
}
}
A Classe FuncionarioDao…
package com.gregory.modelo.dao;
import java.time.Duration;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import com.gregory.modelo.Funcionario;
import com.gregory.util.DataUtil;
import com.gregory.util.JPAUtil;
public class FuncionarioDao {
EntityManager em = JPAUtil.getEntityManager();
public void save(Funcionario f){
em.getTransaction().begin();
em.persist(f);
em.getTransaction().commit();
em.close();
}
public void delete(Funcionario f){
String jpql = "";
em.getTransaction().begin();
Query q = em.createQuery(jpql);
q.executeUpdate();
em.getTransaction().commit();
em.close();
}
public void update(Funcionario f){
}
// Formato do CPF tem que ser no Padrao 000-000-000.00
@SuppressWarnings("unchecked")
public List<Funcionario> FindsByCpf(String cpf){
String jpql ="select f from Funcionario f where f.CPF='"+cpf+"'";
List<Funcionario> lista ;
em.getTransaction().begin();
Query q = em.createQuery(jpql);
lista = q.getResultList();
return lista;
}
@SuppressWarnings("unchecked")
public List<Funcionario> returnAll(){
String jpql ="select f from Funcionario f";
List<Funcionario> lista ;
em.getTransaction().begin();
Query q = em.createQuery(jpql);
lista = q.getResultList();
return lista;
}
Página de cadastro
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Cadastra Funcionário</title>
</head>
<h:body>
<center>
<h:form>
<h:panelGrid columns="2">
Nome: <h:inputText id="name" value="#{funcionarioBean.funcionario.nome}" />
CPF: <h:inputText id="cpf" value="#{funcionarioBean.funcionario.CPF}"/>
Função: <h:inputText id="function" value="#{funcionarioBean.funcionario.funcao}"/>
<h:commandButton value="Gravar" action="#{funcionarioBean.grava}" /> <br />
</h:panelGrid>
</h:form>
</center>
</h:body>
`
Página de Listagem – (Essa funciona sem problemas)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Listagem dos Funcionários</title>
</head>
<h:body>
<h1 style="text-align: center;">Funcionários Cadastrados</h1>
<center>
<h:dataTable value="#{funcionarioBean.funcionarios}" var="f"
border="1">
<h:column>
<f:facet name="header">cpf</f:facet>
#{f.CPF}
</h:column>
<h:column>
<f:facet name="header">Nome</f:facet>
#{f.nome}
</h:column>
<h:column>
<f:facet name="header">Cargo</f:facet>
#{f.funcao}
</h:column>
</h:dataTable>
</center>
</h:body>
</html>
Agradeço a atenção de Todos!!