Bom Dia,
Tenho 2 tabelas Cliente e Atendimento.
O problema é que quando vou salvar um Atendimento da o seguinte erro…
jun 17, 2016 11:11:37 AM com.sun.faces.lifecycle.InvokeApplicationPhase execute ADVERTÊNCIA: #{atendimentoBack.salvar}: java.lang.IllegalStateException: Transaction not active javax.faces.FacesException: #{atendimentoBack.salvar}: java.lang.IllegalStateException: Transaction not 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:794) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) 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:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 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:220) 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:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) Caused by: javax.faces.el.EvaluationException: java.lang.IllegalStateException: Transaction not active at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) … 27 more Caused by: java.lang.IllegalStateException: Transaction not active at org.hibernate.ejb.TransactionImpl.rollback(TransactionImpl.java:101) at Dao.CrudDAO.cadastrar(CrudDAO.java:24) at Bo.CrudBO.cadastrar(CrudBO.java:10) at Backbean.AtendimentoBack.salvar(AtendimentoBack.java:104) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) 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:88) … 28 more
Meu Index onde é a tela do atendimento
<h2>Atendimento</h2>
<h:form id ="atendimento">
<p:commandButton value="Incluir" action="#{clienteBack.paginaClientes}" >
</p:commandButton>
<br /><br />
<p:panelGrid columns="2">
<h:outputText value="ID" />
<h:outputText value="#{clienteBack.clienteSelecionado.id}" />
<h:outputText value="Nome:" />
<h:outputText value="#{clienteBack.clienteSelecionado.nome}" />
</p:panelGrid>
<h:panelGrid columns="2" cellpadding="5">
<h:selectOneMenu value="#{atendimentoBack.atendimento.tipoid}" >
<f:selectItem itemLabel="Tipo de Atendimento" />
<f:selectItems value="#{tipoBack.carregarSelect}" />
</h:selectOneMenu ><br/>
</h:panelGrid>
<p>Descrição do Atendimento</p>
<p:inputTextarea rows="10" cols="90" value="#{atendimentoBack.atendimento.descricao}" queryDelay="750" minQueryLength="4" />
<p:commandButton value="Salvar" action ="#{atendimentoBack.salvar}"
update ="atendimento"/>
</h:form>
</ui:insert>
<div class="wrapper">
<h:form>
Minha classe ClienteEntity
@Entity
@Table(name = "CLIENTE")
public class ClienteEntity {
@OneToMany(mappedBy = "cliente", targetEntity = AtendimentosEntity.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<AtendimentosEntity> Atendimento;
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "NOME")
private String nome;
minha classe AtendimentoEntity
@Entity
@Table(name = "ATENDIMENTO")
public class AtendimentosEntity {
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
//descricao do atendimento
@Column(name = "DESCRICAO")
private String descricao;
@OneToOne
@JoinColumn(name="CLIENTE_ID")
private ClienteEntity cliente;
public ClienteEntity getCliente() {
return cliente;
}
public void setCliente(ClienteEntity cliente) {
this.cliente = cliente;
}
public int getTipoid() {
return tipoid;
}
public void setTipoid(int tipoid) {
this.tipoid = tipoid;
}
}
Minha classe AtendimentoBack
@ManagedBean(name = "atendimentoBack")
@ViewScoped
public class AtendimentoBack {
private ClienteEntity cliente;
public ClienteEntity getCliente() {
return cliente;
}
public void setCliente(ClienteEntity cliente) {
this.cliente = cliente;
}
private AtendimentosEntity atendimento;
private List<AtendimentosEntity> atendimentos;
public AtendimentosEntity getAtendimento() {
return atendimento;
}
public void setAtendimento(AtendimentosEntity atendimento) {
this.atendimento = atendimento;
}
public List<AtendimentosEntity> getAtendimentos() {
return atendimentos;
}
public void setAtendimentos(List<AtendimentosEntity> atendimentos) {
this.atendimentos = atendimentos;
}
@PostConstruct
public void inicializar(){
atendimento = new AtendimentosEntity();
atendimentos = new AtendimentoBO().listarTodos(AtendimentosEntity.class);
cliente = new ClienteEntity();
}
public String salvar(){
if(atendimento.getId() != null){
new AtendimentoBO().atualizar(atendimento);
}else{
atendimento.setCliente(cliente);
new AtendimentoBO().cadastrar(atendimento);
}
atendimento = new AtendimentosEntity();
atendimentos = new AtendimentoBO().listarTodos(AtendimentosEntity.class);
cliente = new ClienteEntity();
return "/restrito/index.xhtml?faces-redirect=true";
}
}