Boa tarde, to com um problema aqui ao atualizar os dados utilizando JSF 2.0
tenho uma tabela de dados com os campos listados do banco de dados, a penultima coluna da da tabela é um imagem que após clicar ela redireciona a linha o usuario para uma outra página para ser alterado, após preencher os campos a serem alterados me deparo com um erro onde não estou conseguindo encontrar a solução, irei postar os códigos fontes referentes a essa programação..
01/04/2012 17:49:02 com.sun.faces.lifecycle.InvokeApplicationPhase execute
WARNING: #{usuarioBean.editar}: org.hibernate.HibernateException: immutable natural identifier of an instance of br.com.anderson.usuario.Usuario was altered
javax.faces.FacesException: #{usuarioBean.editar}: org.hibernate.HibernateException: immutable natural identifier of an instance of br.com.anderson.usuario.Usuario was altered
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:409)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.faces.el.EvaluationException: org.hibernate.HibernateException: immutable natural identifier of an instance of br.com.anderson.usuario.Usuario was altered
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
... 19 more
Caused by: org.hibernate.HibernateException: immutable natural identifier of an instance of br.com.anderson.usuario.Usuario was altered
at org.hibernate.event.def.DefaultFlushEntityEventListener.checkNaturalId(DefaultFlushEntityEventListener.java:117)
at org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:192)
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:143)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:49)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
at br.com.anderson.usuario.UsuarioDAOHibernate.alterar(UsuarioDAOHibernate.java:36)
at br.com.anderson.usuario.UsuarioRN.alterar(UsuarioRN.java:28)
at br.com.anderson.bean.UsuarioBean.editar(UsuarioBean.java:65)
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:152)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
... 20 more
01/04/2012 17:49:02 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
org.hibernate.HibernateException: immutable natural identifier of an instance of br.com.anderson.usuario.Usuario was altered
at org.hibernate.event.def.DefaultFlushEntityEventListener.checkNaturalId(DefaultFlushEntityEventListener.java:117)
at org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:192)
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:143)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:49)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
at br.com.anderson.usuario.UsuarioDAOHibernate.alterar(UsuarioDAOHibernate.java:36)
at br.com.anderson.usuario.UsuarioRN.alterar(UsuarioRN.java:28)
at br.com.anderson.bean.UsuarioBean.editar(UsuarioBean.java:65)
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:152)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
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: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:409)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
@Override
public void alterar(Usuario user) {
Transaction tx = session.beginTransaction();
this.session.update(user);
tx.commit();
this.session.close();
}
public void alterar(Usuario usuario){
this.usuarioDAO.alterar(usuario);
}
public String editar(){
FacesContext context = FacesContext.getCurrentInstance();
String senha = usuario.getSenha();
if(!senha.equals(confirmaSenha)){
FacesMessage mensagem = new FacesMessage("Confirmação de Senha Incorreta");
context.addMessage(null, mensagem);
return null;
}else{
UsuarioRN usuarioRN = new UsuarioRN();
usuarioRN.alterar(usuario);
return "listagem";
}
}
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<html>
<head>
<title>Lista de Usuários</title>
</head>
<body>
<f:view>
<h:form>
<h:messages/>
<h:dataTable value="#{usuarioBean.lista}" var="usuario" rules="rows" cellpadding="7">
<f:facet name="header">
<h:outputText value="Listagem de Usuários" />
</f:facet>
<f:facet name="footer">
<h:outputText value="Final da Listagem"/>
</f:facet>
<h:column>
<f:facet name="header">
<h:outputText value="Identificação"/>
</f:facet>
<h:outputText value="#{usuario.idusuario}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Status"/>
</f:facet>
<h:commandLink action="#{usuarioBean.active}">
<h:graphicImage value="/imagem/#{usuario.status}.png"/>
<f:setPropertyActionListener value="#{usuario}" target="#{usuarioBean.usuario}"/>
</h:commandLink>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Idioma"/>
</f:facet>
<!--<h:graphicImage value="/imagem/#{usuario.idioma}.png"/>-->
<h:outputText value="#{usuario.idioma}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nome"/>
</f:facet>
<h:outputText value="#{usuario.nome}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Email"/>
</f:facet>
<h:outputText value="#{usuario.email}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Editar"/>
</f:facet>
<h:commandLink action="editar.jsp">
<h:graphicImage value="/imagem/Alterar.png"/>
<f:setPropertyActionListener value="#{usuario}" target="#{usuarioBean.usuario}"/>
</h:commandLink>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Deletar"/>
</f:facet>
<h:commandLink action="#{usuarioBean.deletar}">
<h:graphicImage value="/imagem/Deletar.png"/>
<f:setPropertyActionListener value="#{usuario}" target="#{usuarioBean.usuario}"/>
</h:commandLink>
</h:column>
</h:dataTable>
</h:form>
</f:view>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Alterar Usuario</title>
</head>
<body>
<f:view>
<h1>Alteração de Usuario </h1>
<h:form id="cadastro">
<h:messages/>
<h:inputHidden value="#{usuarioBean.usuario.idusuario}"/>
<h:panelGrid columns="2">
<h:outputText value="Nome: "/>
<h:inputText value="#{usuarioBean.usuario.nome}" required ="true" requiredMessage="Por Favor digite seu Nome"
validatorMessage="O nome deve conter no mínimo 7 e no maximo 45 caracters">
<f:validateLength minimum="7" maximum="45"/>
</h:inputText>
<h:outputText value="Email: "/>
<h:inputText value="#{usuarioBean.usuario.email}" required ="true" requiredMessage="Digite seu Email"
validatorMessage="Email inválido!" >
<f:validateRegex pattern="[a-zA-Z0-9\-\_\.]+@[a-zA-Z0-9\-\_\.]+"/></h:inputText>
<h:outputText value="Idioma: "/>
<h:selectOneMenu value="#{usuarioBean.usuario.idioma}">
<f:selectItem itemValue="Português"/>
<f:selectItem itemValue="Espanhol"/>
<f:selectItem itemValue="Inglês"/>
</h:selectOneMenu>
<h:outputText value="Status: "/>
<h:selectOneMenu value="#{usuarioBean.usuario.status}">
<f:selectItem itemValue="Ativo"/>
<f:selectItem itemValue="Inativo"/>
</h:selectOneMenu>
<h:outputText value="Senha: "/>
<h:inputSecret value="#{usuarioBean.usuario.senha}" required="true"
requiredMessage="Campo Senha Obrigatório" redisplay="true"/>
<h:outputText value="Confirma Senha: "/>
<h:inputSecret value="#{usuarioBean.confirmaSenha}" redisplay="true"/>
</h:panelGrid>
<h:commandButton action="#{usuarioBean.editar}"
value="Editar"/>
</h:form>
</f:view>
</body>
</html>
