@Bruno.Silveira escreveu:
Sou iniciante em Hibernate e jsf e estou com o seguinte erro: o Cenário é o seguinte tenho 2 tabelas usuários e perfis os meus perfis funcionam normalmente porem não consigo salvar meus usuários, aparentemente o meu código não esta localizando a minha chave estrangeira seguem abaixo o log de erro e meu código, já testei de várias forma fiz diversas alterações porem não consigo fazer com que minha classe
DAOTeste
salve o registro.Erro:
INFO: HHH000037: Columns: [us_login, us_senha, perfil_per_id, us_id, us_situação, us_nome, us_ramal, us_email, us_obsevacao]
Hibernate: select perfil0_.per_id as per_id1_0_, perfil0_.per_descricao as per_desc2_0_ from Perfil perfil0_ where perfil0_.per_id=?classe usuario.java
package br.com.teste.domain; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import org.hibernate.validator.constraints.Email; import org.hibernate.validator.constraints.NotEmpty; import com.sun.istack.internal.NotNull; @Entity @Table(name="Usuario") @NamedQueries({@NamedQuery(name="Usuario.listar",query="SELECT usuario FROM Usuario usuario"), @NamedQuery(name="Usuario.buscarPorCodigo",query="SELECT usuario FROM Usuario usuario WHERE usuario.id=:id"), }) public class Usuario { @Id @Column (name="us_id") @GeneratedValue(strategy=GenerationType.AUTO) private Long id; @Column (name="us_nome" ,length=45,nullable=false) @NotEmpty(message="Informe seu nome!") private String nome; @Column (name="us_email",length=45,nullable=false) @NotEmpty(message="Informe seu e-mail!") @Email(message="E-mail inválido!") private String email; @Column (name="us_login",length=45,nullable=false) @NotEmpty(message="Informe seu login!") private String login; @Column (name="us_senha",length=16,nullable=false) @NotEmpty(message="Informe sua senha!") private String senha; @Column (name="us_ramal") @NotEmpty(message="Informe seu ramal!") private int ramal; @Column (name="us_obsevacao",length=45) private String obsevacao; @Column (name="us_situação",nullable=false) @NotEmpty(message="Informe uma situação!") @NotNull private Boolean situação; @ManyToOne(fetch=FetchType.EAGER) @JoinColumn(name="Perfil_per_id",referencedColumnName="per_id",nullable=false) @NotEmpty private Perfil perfil; public Perfil getPerfil() { return perfil; } public void setPerfil(Perfil perfil) { this.perfil = perfil; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } 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 getLogin() { return login; } public void setLogin(String login) { this.login = login; } public String getSenha() { return senha; } public void setSenha(String senha) { this.senha = senha; } public int getRamal() { return ramal; } public void setRamal(int ramal) { this.ramal = ramal; } public String getObsevacao() { return obsevacao; } public void setObsevacao(String obsevacao) { this.obsevacao = obsevacao; } public Boolean getSituação() { return situação; } public void setSituação(Boolean situação) { this.situação = situação; } @Override public String toString() { return "Usuario [id=" + id + ", nome=" + nome + ", email=" + email + ", login=" + login + ", senha=" + senha + ", ramal=" + ramal + ", obsevacao=" + obsevacao + ", situação=" + situação + ", perfil=" + perfil + "]"; } }
classe usuarioDAO teste (esta comentado pois deu erro sem os comentários ai decidi testar o método de forma isolada)
package br.com.teste.test; //import java.util.List; //import org.junit.Ignore; import org.junit.Test; import br.com.teste.DAO.PerfilDAO; import br.com.teste.DAO.UsuarioDAO; import br.com.teste.domain.Perfil; import br.com.teste.domain.Usuario; public class UsuarioDAOTest { @Test public void salvar() throws Exception { PerfilDAO dao = new PerfilDAO(); Perfil p2 = dao.buscarPorCodigo(8L); Usuario u1 = new Usuario(); u1.setNome("Adriano"); u1.setEmail("Adriano@teste.com.br"); u1.setLogin("adriano"); u1.setObsevacao("teste1"); u1.setPerfil(p2); u1.setRamal(95619); u1.setSenha("456"); u1.setSituação(true); UsuarioDAO udao = new UsuarioDAO(); udao.salvar(u1); } // @Test // @Ignore // public void listar() { // UsuarioDAO dao = new UsuarioDAO(); // List<Usuario> usuarios = dao.listar(); // // for (Usuario usuario : usuarios) { // // System.out.println(usuario); // // } // // } // // @Test // @Ignore // // // public void buscarPorCodigo() { // // UsuarioDAO dao = new UsuarioDAO(); // Usuario p1 = dao.buscarPorCodigo(6L); // // System.out.println(p1); // // } // // @Test // @Ignore // public void excluir() throws Exception { // // UsuarioDAO dao = new UsuarioDAO(); // Usuario usuario = dao.buscarPorCodigo(6L); // // // dao.excluir(usuario); // // } // // @Test // @Ignore // public void editar() throws Exception { // PerfilDAO dao = new PerfilDAO(); // Perfil p2 = dao.buscarPorCodigo(9L); // // UsuarioDAO udao = new UsuarioDAO(); // Usuario usuario = udao.buscarPorCodigo(4L); // // usuario.setNome("Arlindo"); // usuario.setEmail("Arlindo@teste.com.br"); // usuario.setLogin("arlindo"); // usuario.setObsevacao("teste10"); // usuario.setPerfil(p2); // usuario.setRamal(95619); // usuario.setSenha("123"); // usuario.setSituação(true); // // udao.editar(usuario); // // } // }
classe usuariodao
package br.com.teste.DAO; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import br.com.teste.domain.Perfil; import br.com.teste.domain.Usuario; import br.com.teste.util.HibernateUtil; public class UsuarioDAO { public void salvar(Usuario usuario) throws Exception { Session sessao = HibernateUtil.getSessionFactory().openSession(); Transaction transacao = null;// inicia transacao como nula try { transacao = sessao.beginTransaction();// abrindo a transacao sessao.save(usuario);// salva dados do perfil transacao.commit();// confirmando transacao } catch (RuntimeException ex) { if (transacao != null) { transacao.rollback(); } throw ex; } finally { sessao.close(); } } @SuppressWarnings("unchecked") public List<Usuario> listar() { Session sessao = HibernateUtil.getSessionFactory().openSession(); List<Usuario> usuarios = null;// inicia transacao como nula try { Query consulta = sessao.getNamedQuery("Usuario.listar"); usuarios = consulta.list(); } catch (RuntimeException ex) { throw ex; } finally { sessao.close(); } return usuarios; } public Usuario buscarPorCodigo(Long id) { Session sessao = HibernateUtil.getSessionFactory().openSession(); Usuario usuario = null;// inicia transacao como nula try { Query consulta = sessao.getNamedQuery("Usuario.buscarPorCodigo"); consulta.setLong("Id", id); usuario = (Usuario) consulta.uniqueResult(); } catch (RuntimeException ex) { throw ex; } finally { sessao.close(); } return usuario; } public void excluir(Usuario usuario) throws Exception { Session sessao = HibernateUtil.getSessionFactory().openSession(); Transaction transacao = null;// inicia transacao como nula try { transacao = sessao.beginTransaction();// abrindo a transacao sessao.delete(usuario);// salva dados do perfil transacao.commit();// confirmando transacao } catch (RuntimeException ex) { if (transacao != null) { transacao.rollback(); } throw ex; } finally { sessao.close(); } } public void editar(Perfil perfil) throws Exception { Session sessao = HibernateUtil.getSessionFactory().openSession(); Transaction transacao = null;// inicia transacao como nula try { transacao = sessao.beginTransaction();// abrindo a transacao sessao.update(perfil);// salva dados do perfil transacao.commit();// confirmando transacao } catch (RuntimeException ex) { if (transacao != null) { transacao.rollback(); } throw ex; } finally { sessao.close(); } } public void editar(Usuario usuario) throws Exception { Session sessao = HibernateUtil.getSessionFactory().openSession(); Transaction transacao = null;// inicia transacao como nula try { transacao = sessao.beginTransaction();// abrindo a transacao sessao.update(usuario);// salva dados do perfil transacao.commit();// confirmando transacao } catch (RuntimeException ex) { if (transacao != null) { transacao.rollback(); } throw ex; } finally { sessao.close(); } } } ****************classe usuárioBean************************ package br.com.teste.Bean; import java.util.ArrayList; import java.util.List; import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; import br.com.teste.util.JSFUtil; import br.com.teste.DAO.PerfilDAO; import br.com.teste.DAO.UsuarioDAO; import br.com.teste.domain.Perfil; import br.com.teste.domain.Usuario; @ManagedBean(name = "MBUsuario") @ViewScoped public class UsuarioBean { private Usuario usuario; private ArrayList<Usuario>itens; private ArrayList<Usuario>itensFiltrados; private String acao; private Long codigo; private List<Perfil>listaPerfil; public void setListaPerfil(List<Perfil> listaPerfil) { this.listaPerfil = listaPerfil; } public List<Perfil> getListaPerfil() { return listaPerfil; } public Long getCodigo() { return codigo; } public void setCodigo(Long codigo) { this.codigo = codigo; } public String getAcao() { return acao; } public void setAcao(String acao) { this.acao = acao; } public Usuario getUsuario() { return usuario; } // public void setProduto(Usuario usuario) { this.usuario = usuario; } public ArrayList<Usuario> getItens() { return itens; } public void setItens(ArrayList<Usuario> itens) { this.itens = itens; } public ArrayList<Usuario> getItensFiltrados() { return itensFiltrados; } public void setItensFiltrados(ArrayList<Usuario> itensFiltrados) { this.itensFiltrados = itensFiltrados; } // @PostConstruct public void prepararPesquisa(){ try { UsuarioDAO fdao = new UsuarioDAO(); itens = (ArrayList<Usuario>) fdao.listar(); } catch (RuntimeException e) { JSFUtil.adicionarMensagemErro("ex.getMessage()"); e.printStackTrace(); } } public void carregarCadastro(){ try { if(codigo != null){ UsuarioDAO fdao = new UsuarioDAO(); usuario = fdao.buscarPorCodigo(codigo); } else { usuario = new Usuario(); } PerfilDAO dao = new PerfilDAO(); listaPerfil = dao.listar(); } catch (RuntimeException e) { JSFUtil.adicionarMensagemErro("ex.getMessage()"); e.printStackTrace(); } } public void novo(){ usuario = new Usuario(); } public void salvar() { try { UsuarioDAO fdao = new UsuarioDAO(); fdao.salvar(usuario); usuario = new Usuario(); JSFUtil.adicionarMensagemSucesso("Produto salvo com sucesso!"); } catch (Exception e) { JSFUtil.adicionarMensagemErro("ex.getMessage()"); e.printStackTrace(); } } public void excluir(){ try { UsuarioDAO fdao = new UsuarioDAO(); fdao.excluir(usuario); JSFUtil.adicionarMensagemSucesso("Produto excluido com sucesso!"); } catch (Exception e) { JSFUtil.adicionarMensagemErro("ex.getMessage()"); e.printStackTrace(); } } public void editar(){ try { UsuarioDAO fdao = new UsuarioDAO(); fdao.editar(usuario); JSFUtil.adicionarMensagemSucesso("Produto editado com sucesso!"); } catch (Exception e) { JSFUtil.adicionarMensagemErro("ex.getMessage()"); e.printStackTrace(); } } } *********** classe perfildao ******************** package br.com.teste.DAO; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import br.com.teste.domain.Perfil; import br.com.teste.util.HibernateUtil; public class PerfilDAO { public void salvar(Perfil perfil) throws Exception { Session sessao = HibernateUtil.getSessionFactory().openSession(); Transaction transacao = null;// inicia transacao como nula try { transacao = sessao.beginTransaction();// abrindo a transacao sessao.save(perfil);// salva dados do perfil transacao.commit();// confirmando transacao } catch (RuntimeException ex) { if (transacao != null) { transacao.rollback(); } throw ex; } finally { sessao.close(); } } @SuppressWarnings("unchecked") public List<Perfil> listar() { Session sessao = HibernateUtil.getSessionFactory().openSession(); List<Perfil> perfis = null;// inicia transacao como nula try { Query consulta = sessao.getNamedQuery("Perfil.listar"); perfis = consulta.list(); } catch (RuntimeException ex) { throw ex; } finally { sessao.close(); } return perfis; } public Perfil buscarPorCodigo(Long id) { Session sessao = HibernateUtil.getSessionFactory().openSession(); Perfil perfil = null;// inicia transacao como nula try { Query consulta = sessao.getNamedQuery("Perfil.buscarPorCodigo"); consulta.setLong("Id", id); perfil = (Perfil) consulta.uniqueResult(); } catch (RuntimeException ex) { throw ex; } finally { sessao.close(); } return perfil; } public void excluir(Perfil perfil) throws Exception { Session sessao = HibernateUtil.getSessionFactory().openSession(); Transaction transacao = null;// inicia transacao como nula try { transacao = sessao.beginTransaction();// abrindo a transacao sessao.delete(perfil);// salva dados do perfil transacao.commit();// confirmando transacao } catch (RuntimeException ex) { if (transacao != null) { transacao.rollback(); } throw ex; } finally { sessao.close(); } } public void editar(Perfil perfil) throws Exception { Session sessao = HibernateUtil.getSessionFactory().openSession(); Transaction transacao = null;// inicia transacao como nula try { transacao = sessao.beginTransaction();// abrindo a transacao sessao.update(perfil);// salva dados do perfil transacao.commit();// confirmando transacao } catch (RuntimeException ex) { if (transacao != null) { transacao.rollback(); } throw ex; } finally { sessao.close(); } } } *************** configuração hibernate ******************** <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- configuracao de Conexao com o babco de dados --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/testepatrimonial</property> <property name="connection.username">root</property> <property name="connection.password">1234</property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <!-- gerenciamento --> <property name="current_session_context_class">thread</property> <!-- desabilita o cache --> <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> <!-- exige comandos sql --> <property name="show_sql">true</property> <!-- criacao das tabelas --> <property name="hbm2ddl.auto">update</property> <property name="hbm2ddl.auto">validate</property> <mapping class="br.com.teste.domain.Usuario"/> <mapping class="br.com.teste.domain.Perfil"/> </session-factory> </hibernate-configuration>
Mensagens: 1
Participantes: 1