[RESOLVIDO] Problemas com Hibernate

18 respostas
A

Boa tarde galera..
to com um probleminha referente a utilização do Hibernate.
tenho uma tela JSF tem que alguns campos que serão possivelmente cadastrados no Banco de Dados.. quando preencho todas os dados da tela e clico no botão "salvar" me deparo com um erro que não estou conseguindo encontrar a solução... irei postar os códigos fontes relacionados e a tela de Erro...

TELA JSF
<%@ 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>Cadastro de Usuario</title>
  </head> 
   <body>
     <f:view>
          <h1>Cadastramento de Usuario </h1>
          
          <h:form id="cadastro">
          
             <h:messages />
             
             <h:inputHidden value="#{usuarioBean.usuario.idusuario}"/>
             <h:inputHidden value="#{usuarioBean.usuario.status}"/>
             
             <h:panelGrid columns="2">
                <h:outputText value="Nome: "/>
                <h:inputText value="#{usuarioBean.usuario.nome}" requiredMessage="Por Favor digite seu Nome">
                <f:validateLength minimum="7" maximum="45"/> </h:inputText>
                
                <h:panelGroup>
                   <h:outputText value="Nome: "/>
                   <h:inputText value="#{usuarioBean.usuario.email}" requiredMessage="Email Inválido">
                   <f:validateRegex pattern="[a-zA-Z0-9\-\_\.]+@[a-zA-Z0-9\-\_\.]+"/></h:inputText>
                </h:panelGroup>
              
                <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="Senha: "/>
               <h:inputSecret value="#{usuarioBean.usuario.senha}" redisplay="true"/>
               
               <h:outputText value="Confirma Senha: "/>
                <h:inputSecret value="#{usuarioBean.confirmaSenha}" redisplay="true"/>  
             </h:panelGrid>
              
             <h:commandButton action="#{usuarioBean.salvar}"
                              value="Salvar"/> 
          </h:form>
     </f:view>
   </body>
   
</html>
ARQUIVO DE CONFIGURAÇÃO DO HIBERNATE
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
      "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
      
      
<hibernate-configuration>

    <session-factory>

         <!-- properties -->

         <property name="connection.driver_class">
                org.postgresql.Driver
         </property>
    
         <property name="connection.url">
                jdbc:postgresql://localhost/Aula
         </property>
    
         <property name="dialect">
               org.hibernate.dialect.PostgreSQLDialect
         </property>
    
         <property name="connection.username">postgres</property>
         <property name="connection.password">123456</property>
        
         
         <!-- Debug -->
         <property name="show_sql">true</property>
         <property name="format_sql">true</property>
         <property name="generate_statistics">true</property>
         <property name="use_sql_comments">true</property>
         
         <!-- mapping classes -->
         <mapping class="br.com.anderson.usuario.Usuario"/>
         
    </session-factory>
</hibernate-configuration>
CLASSE QUE REPRESENTA A TABELA
package br.com.anderson.usuario;

import javax.persistence.*;
import java.util.*;

@Entity
@Table(name="usuario")
public class Usuario {
	
	@Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private int idusuario;
	
	@Column(name="nome")
	private String nome;
	
	@org.hibernate.annotations.NaturalId
	@Column(name="email")
	private String email;
	
	@Column(name="senha")
	private String senha;
	
	@Column(name="idioma")
	private String idioma;
	
	@Column(name="status")
	private boolean status;
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((email == null) ? 0 : email.hashCode());
		result = prime * result + ((idioma == null) ? 0 : idioma.hashCode());
		result = prime * result + idusuario;
		result = prime * result + ((nome == null) ? 0 : nome.hashCode());
		result = prime * result + ((senha == null) ? 0 : senha.hashCode());
		result = prime * result + (status ? 1231 : 1237);
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Usuario other = (Usuario) obj;
		if (email == null) {
			if (other.email != null)
				return false;
		} else if (!email.equals(other.email))
			return false;
		if (idioma == null) {
			if (other.idioma != null)
				return false;
		} else if (!idioma.equals(other.idioma))
			return false;
		if (idusuario != other.idusuario)
			return false;
		if (nome == null) {
			if (other.nome != null)
				return false;
		} else if (!nome.equals(other.nome))
			return false;
		if (senha == null) {
			if (other.senha != null)
				return false;
		} else if (!senha.equals(other.senha))
			return false;
		if (status != other.status)
			return false;
		return true;
	}

	public int getIdusuario() {
		return idusuario;
	}

	public void setIdusuario(int idusuario) {
		this.idusuario = idusuario;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getIdioma() {
		return idioma;
	}

	public void setIdioma(String idioma) {
		this.idioma = idioma;
	}

	public boolean isStatus() {
		return status;
	}

	public void setStatus(boolean status) {
		this.status = status;
	}


}
USUARIO BEAN
package br.com.anderson.bean;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import br.com.anderson.usuario.Usuario;
import br.com.anderson.usuario.UsuarioRN;

@ManagedBean
public class UsuarioBean {

	 private Usuario usuario = new Usuario();
	 private String confirmaSenha;
	 
	public String novo(){
		usuario = new Usuario();
		usuario.setStatus(true);
		return "usuario";
	}
	
	public String salvar(){
		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;
		}
		
		UsuarioRN usuarioRN = new UsuarioRN();
		usuarioRN.salvar(usuario);
		
		return "usuarioCadastrado"; 
	}
	
	 
	public Usuario getUsuario() {
		return usuario;
	}
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	public String getConfirmaSenha() {
		return confirmaSenha;
	}
	public void setConfirmaSenha(String confirmaSenha) {
		this.confirmaSenha = confirmaSenha;
	}
}

Obrigado..
Att..

18 Respostas

A

… :shock:

A

Ai galera esqueci de postar o erro… kkkkkkkkkkk
o erro é o seguinte abaixo…

28/03/2012 21:23:02 org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:AulaJSF' did not find a matching property. 28/03/2012 21:23:02 org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.6.0\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.6.0/bin/client;C:/Program Files/Java/jre1.6.0/bin;C:/Program Files/Java/jre1.6.0/lib/i386;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Common Files\Microsoft Shared\Windows Live;F:\eclipse; 28/03/2012 21:23:03 org.apache.coyote.http11.Http11Protocol init INFO: Initializing Coyote HTTP/1.1 on http-8080 28/03/2012 21:23:03 org.apache.catalina.startup.Catalina load INFO: Initialization processed in 1163 ms 28/03/2012 21:23:03 org.apache.catalina.core.StandardService start INFO: Starting service Catalina 28/03/2012 21:23:03 org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/6.0.16 28/03/2012 21:23:04 com.sun.faces.config.ConfigureListener contextInitialized INFO: Inicializando Mojarra 2.1.1 (FCS 20110408) para o contexto '/AulaJSF' 28/03/2012 21:23:07 org.apache.coyote.http11.Http11Protocol start INFO: Starting Coyote HTTP/1.1 on http-8080 28/03/2012 21:23:07 org.apache.jk.common.ChannelSocket init INFO: JK: ajp13 listening on /0.0.0.0:8009 28/03/2012 21:23:07 org.apache.jk.server.JkMain start INFO: Jk running ID=0 time=0/93 config=null 28/03/2012 21:23:07 org.apache.catalina.startup.Catalina start INFO: Server startup in 4119 ms Hibernate: select nextval ('hibernate_sequence') 28/03/2012 21:24:53 com.sun.faces.lifecycle.InvokeApplicationPhase execute WARNING: #{usuarioBean.salvar}: org.hibernate.exception.SQLGrammarException: could not get next sequence value javax.faces.FacesException: #{usuarioBean.salvar}: org.hibernate.exception.SQLGrammarException: could not get next sequence value 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.exception.SQLGrammarException: could not get next sequence value 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.exception.SQLGrammarException: could not get next sequence value at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:119) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:122) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93) at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:562) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:550) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:546) at br.com.anderson.usuario.UsuarioDAOHibernate.salvar(UsuarioDAOHibernate.java:17) at br.com.anderson.usuario.UsuarioRN.salvar(UsuarioRN.java:26) at br.com.anderson.bean.UsuarioBean.salvar(UsuarioBean.java:33) 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 Caused by: org.postgresql.util.PSQLException: ERRO: relação "hibernate_sequence" não existe at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1548) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1316) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:191) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:351) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:255) at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:98) ... 40 more 28/03/2012 21:24:53 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet Faces Servlet threw exception org.postgresql.util.PSQLException: ERRO: relação "hibernate_sequence" não existe at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1548) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1316) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:191) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:351) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:255) at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:98) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:122) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93) at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:562) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:550) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:546) at br.com.anderson.usuario.UsuarioDAOHibernate.salvar(UsuarioDAOHibernate.java:17) at br.com.anderson.usuario.UsuarioRN.salvar(UsuarioRN.java:26) at br.com.anderson.bean.UsuarioBean.salvar(UsuarioBean.java:33) 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)

N

o código

@Id @GeneratedValue(strategy = GenerationType.SEQUENCE) private int idusuario;

troque por

@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int idusuario;

A

novato25:
o código

@Id @GeneratedValue(strategy = GenerationType.SEQUENCE) private int idusuario;

troque por

@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int idusuario;

Ok. irei tentar…
Qualquer coisa irei avisar!!
Abraço!!

A

novato25:
o código

@Id @GeneratedValue(strategy = GenerationType.SEQUENCE) private int idusuario;

troque por

@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int idusuario;

Boa tarde, esse sua solução de trocar o SEQUENCE PARA O IDENTITY, deu certo, mas agora ta acontecendo um parada muita estranha, quando eu abro a página, preencho os dados e clico no botão “salvar” ele salva normalmente no banco de dados, mais se na mesma página eu preencher novamente os campos e clicar novamente no botão “salvar” ele não salva mais também não lança nenhuma exceção… :shock:
isso é certo ou é errado??

R

Como isso é possivel?
Ao clicar em salvar vc esta redirecionando o usuario para outra pagina, nunca será possivel clicar duas vezes.

A

Renato_natos:
Como isso é possivel?
Ao clicar em salvar vc esta redirecionando o usuario para outra pagina, nunca será possivel clicar duas vezes.

Seguinte, quando eu abro a página preencho os dados e clico no botão cadastrar, ele cadastrar normalmente o usuario, mais se eu quiser cadastrar outro usuario após cadastrar o anterior ele não cadastra, e também não lança exceção, não acontece nada, parece que após eu clicar no botão e cadastrar o usuario no banco, aluma coisa está sendo encerrada ou fecha, não sei… :shock:

L

Anderson, vc vai precisar limpar os campos e dizer que para o JSF após clicar em salvar ele tem que gerar um novo fluxo de objeto MBean para aquele request.

A
LPJava:
Anderson, vc vai precisar limpar os campos e dizer que para o JSF após clicar em salvar ele tem que gerar um novo fluxo de objeto MBean para aquele request.
Opa Bom dia... olha esse é meu ManegedBean
package br.com.anderson.bean;   
  
import javax.faces.application.FacesMessage;   
import javax.faces.bean.ManagedBean;   
import javax.faces.context.FacesContext;   
  
import br.com.anderson.usuario.Usuario;   
import br.com.anderson.usuario.UsuarioRN;   
  
@ManagedBean 
@SessionScoped  
public class UsuarioBean {   
  
     private Usuario usuario = new Usuario();   
     private String confirmaSenha;   
       
    public String novo(){   
        usuario = new Usuario();   
        usuario.setStatus(true);   
        return "usuario";   
    }   
       
    public String salvar(){   
        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;   
        }   
           
        UsuarioRN usuarioRN = new UsuarioRN();   
        usuarioRN.salvar(usuario);   
           
        return "usuarioCadastrado";   
    }   
       
       
    public Usuario getUsuario() {   
        return usuario;   
    }   
    public void setUsuario(Usuario usuario) {   
        this.usuario = usuario;   
    }   
    public String getConfirmaSenha() {   
        return confirmaSenha;   
    }   
    public void setConfirmaSenha(String confirmaSenha) {   
        this.confirmaSenha = confirmaSenha;   
    }   
}
mais eu não sei como fazer isso ai que você falou... :shock: rsrsrs
L

é preciso entender o fluxo do JSF. Bem faz assim: qdo clicar em salvar vc manda o usuario para uma pagina, exemplo: “dados salvos com sucesso”, lá vc coloca um botão <> que vai chamar o novamente o formulario de cadastrado, porém esse botão tem, Mbean que chama seu metodo novo() e ai ele direciona para pagina do form, que vai está limpo. O processoé o mesmo que vc fez para chegar até a página do form na primeira vez, a diferença que agora a requisicao vem de outra pagina, ou seja, a que vc exibiu “dados salvo com sucesso”.

A

Opa, entendi mais ou menos o que você quis dizer;;; vou analisar direitinho depois e tentar codificar,mais agora eu te pergunto, não é certo eu poder cadastrar vários usuarios diferentes um depois do outro, após o anterior ser salvo no Banco de dados??
Exemplo, se meu usuario final abrir a página de cadastro de usuarios para cadastrar 3 usuarios, o certo era que numa mesma página ele poder cadastrar vários usuarios não? ou seja, ele preenche os dados clica no botão salvar, depois ele preenche os dados de novo clica no botão salvar, e assim sucessivamente…
Ou eu estou totalmente errado, em programação WEB funciona diferente??

A

Isso ai que você falou é meio inserto não???
é o certo que se faz em programação WEB?

L

Isso ai que você falou é meio inserto não???
é o certo que se faz em programação WEB?

depende do tipo de aplicacao, da regra de negocio e o design da tua aplicação. Então não existe um padrão default para aplicação web de como tu deve desenhar tuas paginas, e sim aquela ideal para o tipo de aplicação que tu tem e se atende as necessidades do cliente, essa é a correta.

N

Troque

@ManagedBean @SessionScoped public class UsuarioBean { ... }

por

@ManagedBean @RequestScoped //linha alterada public class UsuarioBean { ... }

Se não funcionar, adicione mais esta linha depois de salvar o usuário.

usuarioRN.salvar(usuario); usuario = new Usuario(); //adicionar esta linha

E veja se ocorre alguma mudança.

A

Isso ai que você falou é meio inserto não???
é o certo que se faz em programação WEB?

depende do tipo de aplicacao, da regra de negocio e o design da tua aplicação. Então não existe um padrão default para aplicação web de como tu deve desenhar tuas paginas, e sim aquela ideal para o tipo de aplicação que tu tem e se atende as necessidades do cliente, essa é a correta.

Entendo, no meu caso estou passando meu TCC ( Trabalho de conclusão de Curso ) que antes em em JAVA desktop para JAVA WEB… então nesse caso seria mais adequado para ele abrir a página de cadastro, seja ela qual for, e fazer isso ai que não está acontecendo, cadastrar varios usuarios numa mesma abertura de página… vou tentar adequar a mensagem de cadastrado com sucesso na mesma pagina, por isso não sería uma boa aplicação redirecionar a mensagem para outra página :frowning:

A

novato25:
Troque

@ManagedBean @SessionScoped public class UsuarioBean { ... }

por

@ManagedBean @RequestScoped //linha alterada public class UsuarioBean { ... }

Se não funcionar, adicione mais esta linha depois de salvar o usuário.

usuarioRN.salvar(usuario); usuario = new Usuario(); //adicionar esta linha

E veja se ocorre alguma mudança.


OK, antes de inserir sua sugestão no meu código fonte tería como você me explicar por que trocar o Session por Request??
caso eu logar com um usuario na aplicação, e abrir a página de cadastrar novos usuarios, eu tería que ter meu ManagedBean como Session, por que irei aproveitar ID dele gravado na seção, por que como mesmo usuario, eu posso fazer várias outras coisas, e para isso eu tenho que guardar a seção dele, se eu colocar o ManageBean dele como request, eu irei perder essa opção certo??? ou estou errado?

A

novato25:
Troque

@ManagedBean @SessionScoped public class UsuarioBean { ... }

por

@ManagedBean @RequestScoped //linha alterada public class UsuarioBean { ... }

Se não funcionar, adicione mais esta linha depois de salvar o usuário.

usuarioRN.salvar(usuario); usuario = new Usuario(); //adicionar esta linha

E veja se ocorre alguma mudança.


Ai mano, fiz essas duas alterções que você sugeriu e não deu certo, to achando que o problema é no Hibernate e não n JSF…

A

Ai pessoal conseguir resolver o problema, na session dentro do meu método cadastrar ao invés de chamar o método save estava chamando o método update
Obrigado a todos pela ajuda!!!

Abraços!!!

Criado 28 de março de 2012
Ultima resposta 1 de abr. de 2012
Respostas 18
Participantes 4