Problema de gravação de colunas com hibernate
Bom dia pessoa, estou com erro aqui que é muito estranho. Vou tentar explicar da melhor forma possível.Estou fazendo um sistema de controle pessoal, para estudar mesmo pois só iniciante ainda. E estou com o seguinte problema.Eu fiz o cadastro de usuários e cadastro de contas bancárias.No cadastro de usuário, eu já deixei a opção para o usuário cadastrar sua primeira conta na hora do registro. Ele só pede o valor "descrição" e "saldo inicial".O problema é o seguinte:Quando eu crio a conta já no cadastro, ele salva todos os dados perfeitamente no banco de dados.Ao listar as contas ele me traz, descrição, data, saldo inicial, se é favorita ou não, e as opções de editar e excluir. Tudo isso é salvo perfeitamente no Banco de Dados.Porém, quando eu tento adicionar uma nova conta na pagina de contas, o que acontece é o seguinte.Eu coloco a descrição, coloco o saldo inicial.Mas no banco de dados, ele não está pegando nem a Descrição e nem o Saldo Inicial. O resto vai normalmente.
Veja como fica no banco de dados, as 2 contas que estão com as informações completas foram criadas na hora do registro, as outras pela pagina de contas.
+-----------+-------------+------------+---------------------+---------------+----------+| cod_conta | cod_usuario | des_conta | dat_cadastro | saldo_inicial | favorita |+-----------+-------------+------------+---------------------+---------------+----------+| 8 | 1 | Banco Itau | 2011-09-13 18:24:54 | 1000 | || 12 | 1 | NULL | 2011-09-13 21:56:32 | 0 | || 13 | 1 | NULL | 2011-09-13 21:57:15 | 0 | || 14 | 2 | Banco HSBC | 2011-09-13 21:58:24 | 10000 | || 18 | 2 | NULL | 2011-09-13 22:56:59 | 0 | |+-----------+-------------+------------+---------------------+---------------+----------+[code]
Alguém tem alguma idéia do que pode ser?Obrigado.
Veja como fica no banco de dados, as 2 contas que estão com as informações completas foram criadas na hora do registro, as outras pela pagina de contas.
+-----------+-------------+------------+---------------------+---------------+----------+| cod_conta | cod_usuario | des_conta | dat_cadastro | saldo_inicial | favorita |+-----------+-------------+------------+---------------------+---------------+----------+| 8 | 1 | Banco Itau | 2011-09-13 18:24:54 | 1000 | || 12 | 1 | NULL | 2011-09-13 21:56:32 | 0 | || 13 | 1 | NULL | 2011-09-13 21:57:15 | 0 | || 14 | 2 | Banco HSBC | 2011-09-13 21:58:24 | 10000 | || 18 | 2 | NULL | 2011-09-13 22:56:59 | 0 | |+-----------+-------------+------------+---------------------+---------------+----------+[code]
Alguém tem alguma idéia do que pode ser?Obrigado.
Dennis Faggiani
Curtidas 0
Respostas
Davi Costa
14/09/2011
Seria interessante ver seus fontes, não tem como ajudar muito só assim. Mas uma coisa que não entendi essa nova conta é para o mesmo usuário?É criado uma conta nova, ou foi feito update na que já existia?
att Davi
att Davi
GOSTEI 0
Dennis Faggiani
14/09/2011
Seria interessante ver seus fontes, não tem como ajudar muito só assim. Mas uma coisa que não entendi essa nova conta é para o mesmo usuário?É criado uma conta nova, ou foi feito update na que já existia?
att Davi
att Davi
Olá Davi, obrigado pela resposta.Sim, a conta é para o mesmo usuário, isso é definido pelo código do usuário, e ele cria uma nova conta, não faz o update, eu não coloquei o codigo pois não sabia oq seria relevante, vou postar os codigos da contaClasse Conta[code]package financeiro.conta;
import java.io.Serializable;import java.util.Date;
import javax.persistence.Entity;import javax.persistence.*;import javax.persistence.Table;
import org.hibernate.annotations.*;
import financeiro.usuario.Usuario;
@Entity@Table(name="conta_bancaria")public class Conta implements Serializable {
private static final long serialVersionUID = 1L;
@Id @GeneratedValue @Column(name="cod_conta") private Integer conta;
@ManyToOne @OnDelete(action=OnDeleteAction.CASCADE) @JoinColumn(name = "cod_usuario", nullable = false) private Usuario usuario;
@Column(name="des_conta") private String descricao;
@Column(name="dat_cadastro", nullable = false, updatable = false) private Date dataCadastro;
@Column(name="saldo_inicial") private float saldoInicial;
@Column(name="favorita") private boolean favorita;
public Integer getConta() { return conta; }
public void setConta(Integer conta) { this.conta = conta; }
public Usuario getUsuario() { return usuario; }
public void setUsuario(Usuario usuario) { this.usuario = usuario; }
public String getDescricao() { return descricao; }
public void setDescricao(String descricao) { this.descricao = descricao; }
public Date getDataCadastro() { return dataCadastro; }
public void setDataCadastro(Date dataCadastro) { this.dataCadastro = dataCadastro; }
public float getSaldoInicial() { return saldoInicial; }
public void setSaldoInicial(float saldoInicial) { this.saldoInicial = saldoInicial; }
public boolean isFavorita() { return favorita; }
public void setFavorita(boolean favorita) { this.favorita = favorita; }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((conta == null) ? 0 : conta.hashCode()); result = prime * result + ((dataCadastro == null) ? 0 : dataCadastro.hashCode()); result = prime * result + ((descricao == null) ? 0 : descricao.hashCode()); result = prime * result + (favorita ? 1231 : 1237); result = prime * result + ((usuario == null) ? 0 : usuario.hashCode()); result = prime * result + Float.floatToIntBits(saldoInicial); return result; }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Conta other = (Conta) obj; if (conta == null) { if (other.conta != null) return false; } else if (!conta.equals(other.conta)) return false; if (dataCadastro == null) { if (other.dataCadastro != null) return false; } else if (!dataCadastro.equals(other.dataCadastro)) return false; if (descricao == null) { if (other.descricao != null) return false; } else if (!descricao.equals(other.descricao)) return false; if (favorita != other.favorita) return false; if (usuario == null) { if (other.usuario != null) return false; } else if (!usuario.equals(other.usuario)) return false; if (Float.floatToIntBits(saldoInicial) != Float.floatToIntBits(other.saldoInicial)) return false; return true; }
}[code]
Classe ContaDAO
[code]package financeiro.conta;
import java.util.List;
import financeiro.usuario.Usuario;
public interface ContaDAO {
public void salvar(Conta conta);
public void excluir(Conta conta);
public Conta carregar(Integer conta);
public List<Conta> listar(Usuario usuario);
public Conta buscarFavorita(Usuario usuario);}[code]
Classe ContaDAOHibernate[code]package financeiro.conta;
import java.util.List;
import org.hibernate.Criteria;import org.hibernate.Session;import org.hibernate.criterion.Restrictions;
import financeiro.usuario.Usuario;
public class ContaDAOHibernate implements ContaDAO {
private Session session;
public void setSession(Session session) { this.session = session; }
@Override public void excluir(Conta conta) { this.session.delete(conta); }
@Override public void salvar(Conta conta) { this.session.saveOrUpdate(conta); }
@Override public Conta carregar(Integer conta) { return (Conta) this.session.get(Conta.class, conta); }
@SuppressWarnings("unchecked") @Override public List<Conta> listar(Usuario usuario) {
Criteria criteria = this.session.createCriteria(Conta.class); criteria.add(Restrictions.eq("usuario", usuario));
return criteria.list(); }
@Override public Conta buscarFavorita(Usuario usuario) {
Criteria criteria = this.session.createCriteria(Conta.class); criteria.add(Restrictions.eq("usuario", usuario)); criteria.add(Restrictions.eq("favorita", true));
return (Conta) criteria.uniqueResult(); }}[code]
Classe ContaRN
[code]package financeiro.conta;
import java.util.Date;import java.util.List;
import financeiro.usuario.Usuario;import financeiro.util.DAOFactory;
public class ContaRN {
private ContaDAO contaDAO;
public ContaRN() { this.contaDAO = DAOFactory.criarContaDAO(); }
public List<Conta> listar(Usuario usuario) { return this.contaDAO.listar(usuario); }
public Conta carregar(Integer conta) { return this.contaDAO.carregar(conta); }
public void salvar(Conta conta) { conta.setDataCadastro(new Date()); this.contaDAO.salvar(conta); }
public void excluir(Conta conta) { this.contaDAO.excluir(conta); }
public void tornarFavorita(Conta contaFavorita) { Conta conta = this.buscarFavorita(contaFavorita.getUsuario()); if (conta != null) { conta.setFavorita(false); this.contaDAO.salvar(conta); }
contaFavorita.setFavorita(true); this.contaDAO.salvar(contaFavorita); }
public Conta buscarFavorita(Usuario usuario) { return this.contaDAO.buscarFavorita(usuario); }}[code]
Classe ContaBean[code]package financeiro.web;
import java.util.List;
import javax.faces.bean.ManagedBean;import javax.faces.bean.RequestScoped;
import financeiro.conta.Conta;import financeiro.conta.ContaRN;import financeiro.web.util.ContextoUtil;
@ManagedBean(name="contaBean")@RequestScopedpublic class ContaBean {
private Conta selecionada = new Conta();private List<Conta> lista = null;
public void salvar(){ ContextoBean contextoBean = ContextoUtil.getContextoBean(); this.selecionada.setUsuario(contextoBean.getUsuarioLogado()); ContaRN contaRN = new ContaRN(); contaRN.salvar(this.selecionada); this.selecionada = new Conta(); this.lista = null;}
public void editar(){ }
public void excluir(){ ContaRN contaRN = new ContaRN(); contaRN.excluir(this.selecionada); this.selecionada = new Conta(); this.lista = null;}
public void tornarFavorita(){ ContaRN contaRN = new ContaRN(); contaRN.tornarFavorita(this.selecionada); this.selecionada = new Conta();}
public Conta getSelecionada() { return selecionada; }
public void setSelecionada(Conta selecionada) { this.selecionada = selecionada; }
public List<Conta> getLista() { if(this.lista == null){ ContextoBean contextoBean = ContextoUtil.getContextoBean(); ContaRN contaRN = new ContaRN(); this.lista = contaRN.listar(contextoBean.getUsuarioLogado()); } return this.lista; }
public void setLista(List<Conta> lista) { this.lista = lista; } }[code]
Classe UsuarioBean (onde eu inserir a opçao de cadastrar conta na hora do registro de usuario.
[code]package financeiro.web;
import java.util.List;
import javax.faces.application.FacesMessage;import javax.faces.bean.ManagedBean;import javax.faces.bean.RequestScoped;import javax.faces.context.FacesContext;
import financeiro.conta.Conta;import financeiro.conta.ContaRN;import financeiro.usuario.Usuario;import financeiro.usuario.UsuarioRN;
@ManagedBean(name = "usuarioBean")@RequestScopedpublic class UsuarioBean {
public Conta getConta() { return conta; }
public void setConta(Conta conta) { this.conta = conta; }
public void setLista(List<Usuario> lista) { this.lista = lista; }
private Usuario usuario = new Usuario(); private String confirmarSenha; private List<Usuario> lista; private String destinoSalvar; private Conta conta = new Conta();
public String novo() { this.destinoSalvar = "usuarioSucesso"; this.usuario = new Usuario(); this.usuario.setAtivo(true); return "usuario";
}
public String editar(){ this.confirmarSenha = this.usuario.getSenha(); return "/publico/usuario"; } public String salvar() { FacesContext context = FacesContext.getCurrentInstance();
String senha = this.usuario.getSenha(); if (!senha.equals(this.confirmarSenha)) { FacesMessage facesMessage = new FacesMessage( "A senha não foi informada corretamente"); context.addMessage(null, facesMessage); return null; } UsuarioRN usuarioRN = new UsuarioRN(); usuarioRN.salvar(this.usuario); if(this.conta.getDescricao() != null){ this.conta.setUsuario(this.usuario); this.conta.setFavorita(true); ContaRN contaRN = new ContaRN(); contaRN.salvar(this.conta); } return this.destinoSalvar; } public String excluir(){ UsuarioRN usuarioRN = new UsuarioRN(); usuarioRN.excluir(this.usuario); this.lista = null; return null; } public String ativar(){ if(this.usuario.isAtivo()){ this.usuario.setAtivo(false); } else { this.usuario.setAtivo(true); } UsuarioRN usuarioRN = new UsuarioRN(); usuarioRN.salvar(this.usuario); return null; } public List<Usuario> getLista(){ if(this.lista == null){ UsuarioRN usuarioRN = new UsuarioRN(); this.lista = usuarioRN.listar(); } return this.lista; } public String atribuirPermissao(Usuario usuario, String permissao){ this.usuario = usuario; java.util.Set<String> permissoes = this.usuario.getPermissao(); if(permissoes.contains(permissao)){ permissoes.remove(permissao); } else { permissoes.add(permissao); } return null; }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((confirmarSenha == null) ? 0 : confirmarSenha.hashCode()); result = prime * result + ((conta == null) ? 0 : conta.hashCode()); result = prime * result + ((destinoSalvar == null) ? 0 : destinoSalvar.hashCode()); result = prime * result + ((lista == null) ? 0 : lista.hashCode()); result = prime * result + ((usuario == null) ? 0 : usuario.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; UsuarioBean other = (UsuarioBean) obj; if (confirmarSenha == null) { if (other.confirmarSenha != null) return false; } else if (!confirmarSenha.equals(other.confirmarSenha)) return false; if (conta == null) { if (other.conta != null) return false; } else if (!conta.equals(other.conta)) return false; if (destinoSalvar == null) { if (other.destinoSalvar != null) return false; } else if (!destinoSalvar.equals(other.destinoSalvar)) return false; if (lista == null) { if (other.lista != null) return false; } else if (!lista.equals(other.lista)) return false; if (usuario == null) { if (other.usuario != null) return false; } else if (!usuario.equals(other.usuario)) return false; return true; }
public Usuario getUsuario() { return usuario; }
public void setUsuario(Usuario usuario) { this.usuario = usuario; }
public String getConfirmarSenha() { return confirmarSenha; }
public void setConfirmarSenha(String confirmarSenha) { this.confirmarSenha = confirmarSenha; }
public String getDestinoSalvar() { return destinoSalvar; } public void setDestinoSalvar(String destinoSalvar) { this.destinoSalvar = destinoSalvar; } }[code]
e os JSFTela de cadastro de conta[code]package financeiro.web;
import java.util.List;
import javax.faces.application.FacesMessage;import javax.faces.bean.ManagedBean;import javax.faces.bean.RequestScoped;import javax.faces.context.FacesContext;
import financeiro.conta.Conta;import financeiro.conta.ContaRN;import financeiro.usuario.Usuario;import financeiro.usuario.UsuarioRN;
@ManagedBean(name = "usuarioBean")@RequestScopedpublic class UsuarioBean {
public Conta getConta() { return conta; }
public void setConta(Conta conta) { this.conta = conta; }
public void setLista(List<Usuario> lista) { this.lista = lista; }
private Usuario usuario = new Usuario(); private String confirmarSenha; private List<Usuario> lista; private String destinoSalvar; private Conta conta = new Conta();
public String novo() { this.destinoSalvar = "usuarioSucesso"; this.usuario = new Usuario(); this.usuario.setAtivo(true); return "usuario";
}
public String editar(){ this.confirmarSenha = this.usuario.getSenha(); return "/publico/usuario"; } public String salvar() { FacesContext context = FacesContext.getCurrentInstance();
String senha = this.usuario.getSenha(); if (!senha.equals(this.confirmarSenha)) { FacesMessage facesMessage = new FacesMessage( "A senha não foi informada corretamente"); context.addMessage(null, facesMessage); return null; } UsuarioRN usuarioRN = new UsuarioRN(); usuarioRN.salvar(this.usuario); if(this.conta.getDescricao() != null){ this.conta.setUsuario(this.usuario); this.conta.setFavorita(true); ContaRN contaRN = new ContaRN(); contaRN.salvar(this.conta); } return this.destinoSalvar; } public String excluir(){ UsuarioRN usuarioRN = new UsuarioRN(); usuarioRN.excluir(this.usuario); this.lista = null; return null; } public String ativar(){ if(this.usuario.isAtivo()){ this.usuario.setAtivo(false); } else { this.usuario.setAtivo(true); } UsuarioRN usuarioRN = new UsuarioRN(); usuarioRN.salvar(this.usuario); return null; } public List<Usuario> getLista(){ if(this.lista == null){ UsuarioRN usuarioRN = new UsuarioRN(); this.lista = usuarioRN.listar(); } return this.lista; } public String atribuirPermissao(Usuario usuario, String permissao){ this.usuario = usuario; java.util.Set<String> permissoes = this.usuario.getPermissao(); if(permissoes.contains(permissao)){ permissoes.remove(permissao); } else { permissoes.add(permissao); } return null; }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((confirmarSenha == null) ? 0 : confirmarSenha.hashCode()); result = prime * result + ((conta == null) ? 0 : conta.hashCode()); result = prime * result + ((destinoSalvar == null) ? 0 : destinoSalvar.hashCode()); result = prime * result + ((lista == null) ? 0 : lista.hashCode()); result = prime * result + ((usuario == null) ? 0 : usuario.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; UsuarioBean other = (UsuarioBean) obj; if (confirmarSenha == null) { if (other.confirmarSenha != null) return false; } else if (!confirmarSenha.equals(other.confirmarSenha)) return false; if (conta == null) { if (other.conta != null) return false; } else if (!conta.equals(other.conta)) return false; if (destinoSalvar == null) { if (other.destinoSalvar != null) return false; } else if (!destinoSalvar.equals(other.destinoSalvar)) return false; if (lista == null) { if (other.lista != null) return false; } else if (!lista.equals(other.lista)) return false; if (usuario == null) { if (other.usuario != null) return false; } else if (!usuario.equals(other.usuario)) return false; return true; }
public Usuario getUsuario() { return usuario; }
public void setUsuario(Usuario usuario) { this.usuario = usuario; }
public String getConfirmarSenha() { return confirmarSenha; }
public void setConfirmarSenha(String confirmarSenha) { this.confirmarSenha = confirmarSenha; }
public String getDestinoSalvar() { return destinoSalvar; } public void setDestinoSalvar(String destinoSalvar) { this.destinoSalvar = destinoSalvar; } }[code]
E no cadastro de usuario
[code]package financeiro.web;
import java.util.List;
import javax.faces.application.FacesMessage;import javax.faces.bean.ManagedBean;import javax.faces.bean.RequestScoped;import javax.faces.context.FacesContext;
import financeiro.conta.Conta;import financeiro.conta.ContaRN;import financeiro.usuario.Usuario;import financeiro.usuario.UsuarioRN;
@ManagedBean(name = "usuarioBean")@RequestScopedpublic class UsuarioBean {
public Conta getConta() { return conta; }
public void setConta(Conta conta) { this.conta = conta; }
public void setLista(List<Usuario> lista) { this.lista = lista; }
private Usuario usuario = new Usuario(); private String confirmarSenha; private List<Usuario> lista; private String destinoSalvar; private Conta conta = new Conta();
public String novo() { this.destinoSalvar = "usuarioSucesso"; this.usuario = new Usuario(); this.usuario.setAtivo(true); return "usuario";
}
public String editar(){ this.confirmarSenha = this.usuario.getSenha(); return "/publico/usuario"; } public String salvar() { FacesContext context = FacesContext.getCurrentInstance();
String senha = this.usuario.getSenha(); if (!senha.equals(this.confirmarSenha)) { FacesMessage facesMessage = new FacesMessage( "A senha não foi informada corretamente"); context.addMessage(null, facesMessage); return null; } UsuarioRN usuarioRN = new UsuarioRN(); usuarioRN.salvar(this.usuario); if(this.conta.getDescricao() != null){ this.conta.setUsuario(this.usuario); this.conta.setFavorita(true); ContaRN contaRN = new ContaRN(); contaRN.salvar(this.conta); } return this.destinoSalvar; } public String excluir(){ UsuarioRN usuarioRN = new UsuarioRN(); usuarioRN.excluir(this.usuario); this.lista = null; return null; } public String ativar(){ if(this.usuario.isAtivo()){ this.usuario.setAtivo(false); } else { this.usuario.setAtivo(true); } UsuarioRN usuarioRN = new UsuarioRN(); usuarioRN.salvar(this.usuario); return null; } public List<Usuario> getLista(){ if(this.lista == null){ UsuarioRN usuarioRN = new UsuarioRN(); this.lista = usuarioRN.listar(); } return this.lista; } public String atribuirPermissao(Usuario usuario, String permissao){ this.usuario = usuario; java.util.Set<String> permissoes = this.usuario.getPermissao(); if(permissoes.contains(permissao)){ permissoes.remove(permissao); } else { permissoes.add(permissao); } return null; }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((confirmarSenha == null) ? 0 : confirmarSenha.hashCode()); result = prime * result + ((conta == null) ? 0 : conta.hashCode()); result = prime * result + ((destinoSalvar == null) ? 0 : destinoSalvar.hashCode()); result = prime * result + ((lista == null) ? 0 : lista.hashCode()); result = prime * result + ((usuario == null) ? 0 : usuario.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; UsuarioBean other = (UsuarioBean) obj; if (confirmarSenha == null) { if (other.confirmarSenha != null) return false; } else if (!confirmarSenha.equals(other.confirmarSenha)) return false; if (conta == null) { if (other.conta != null) return false; } else if (!conta.equals(other.conta)) return false; if (destinoSalvar == null) { if (other.destinoSalvar != null) return false; } else if (!destinoSalvar.equals(other.destinoSalvar)) return false; if (lista == null) { if (other.lista != null) return false; } else if (!lista.equals(other.lista)) return false; if (usuario == null) { if (other.usuario != null) return false; } else if (!usuario.equals(other.usuario)) return false; return true; }
public Usuario getUsuario() { return usuario; }
public void setUsuario(Usuario usuario) { this.usuario = usuario; }
public String getConfirmarSenha() { return confirmarSenha; }
public void setConfirmarSenha(String confirmarSenha) { this.confirmarSenha = confirmarSenha; }
public String getDestinoSalvar() { return destinoSalvar; } public void setDestinoSalvar(String destinoSalvar) { this.destinoSalvar = destinoSalvar; } }[code]
Obrigado.
GOSTEI 0
Dennis Faggiani
14/09/2011
Seria interessante ver seus fontes, não tem como ajudar muito só assim. Mas uma coisa que não entendi essa nova conta é para o mesmo usuário?É criado uma conta nova, ou foi feito update na que já existia?
att Davi
att Davi
Olá Davi, obrigado pela resposta.Sim, a conta é para o mesmo usuário, isso é definido pelo código do usuário, e ele cria uma nova conta, não faz o update, eu não coloquei o codigo pois não sabia oq seria relevante, vou postar os codigos da conta
Classe Conta
package financeiro.conta;
import java.io.Serializable;import java.util.Date;
import javax.persistence.Entity;import javax.persistence.*;import javax.persistence.Table;
import org.hibernate.annotations.*;
import financeiro.usuario.Usuario;
@Entity@Table(name="conta_bancaria")public class Conta implements Serializable {
private static final long serialVersionUID = 1L;
@Id @GeneratedValue @Column(name="cod_conta") private Integer conta;
@ManyToOne @OnDelete(action=OnDeleteAction.CASCADE) @JoinColumn(name = "cod_usuario", nullable = false) private Usuario usuario;
@Column(name="des_conta") private String descricao;
@Column(name="dat_cadastro", nullable = false, updatable = false) private Date dataCadastro;
@Column(name="saldo_inicial") private float saldoInicial;
@Column(name="favorita") private boolean favorita;
public Integer getConta() { return conta; }
public void setConta(Integer conta) { this.conta = conta; }
public Usuario getUsuario() { return usuario; }
public void setUsuario(Usuario usuario) { this.usuario = usuario; }
public String getDescricao() { return descricao; }
public void setDescricao(String descricao) { this.descricao = descricao; }
public Date getDataCadastro() { return dataCadastro; }
public void setDataCadastro(Date dataCadastro) { this.dataCadastro = dataCadastro; }
public float getSaldoInicial() { return saldoInicial; }
public void setSaldoInicial(float saldoInicial) { this.saldoInicial = saldoInicial; }
public boolean isFavorita() { return favorita; }
public void setFavorita(boolean favorita) { this.favorita = favorita; }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((conta == null) ? 0 : conta.hashCode()); result = prime * result + ((dataCadastro == null) ? 0 : dataCadastro.hashCode()); result = prime * result + ((descricao == null) ? 0 : descricao.hashCode()); result = prime * result + (favorita ? 1231 : 1237); result = prime * result + ((usuario == null) ? 0 : usuario.hashCode()); result = prime * result + Float.floatToIntBits(saldoInicial); return result; }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Conta other = (Conta) obj; if (conta == null) { if (other.conta != null) return false; } else if (!conta.equals(other.conta)) return false; if (dataCadastro == null) { if (other.dataCadastro != null) return false; } else if (!dataCadastro.equals(other.dataCadastro)) return false; if (descricao == null) { if (other.descricao != null) return false; } else if (!descricao.equals(other.descricao)) return false; if (favorita != other.favorita) return false; if (usuario == null) { if (other.usuario != null) return false; } else if (!usuario.equals(other.usuario)) return false; if (Float.floatToIntBits(saldoInicial) != Float.floatToIntBits(other.saldoInicial)) return false; return true; }
}Classe ContaDAO
package financeiro.conta;
import java.util.List;
import financeiro.usuario.Usuario;
public interface ContaDAO {
public void salvar(Conta conta);
public void excluir(Conta conta);
public Conta carregar(Integer conta);
public List<Conta> listar(Usuario usuario);
public Conta buscarFavorita(Usuario usuario);}Classe ContaDAOHibernate
package financeiro.conta;
import java.util.List;
import org.hibernate.Criteria;import org.hibernate.Session;import org.hibernate.criterion.Restrictions;
import financeiro.usuario.Usuario;
public class ContaDAOHibernate implements ContaDAO {
private Session session;
public void setSession(Session session) { this.session = session; }
@Override public void excluir(Conta conta) { this.session.delete(conta); }
@Override public void salvar(Conta conta) { this.session.saveOrUpdate(conta); }
@Override public Conta carregar(Integer conta) { return (Conta) this.session.get(Conta.class, conta); }
@SuppressWarnings("unchecked") @Override public List<Conta> listar(Usuario usuario) {
Criteria criteria = this.session.createCriteria(Conta.class); criteria.add(Restrictions.eq("usuario", usuario));
return criteria.list(); }
@Override public Conta buscarFavorita(Usuario usuario) {
Criteria criteria = this.session.createCriteria(Conta.class); criteria.add(Restrictions.eq("usuario", usuario)); criteria.add(Restrictions.eq("favorita", true));
return (Conta) criteria.uniqueResult(); }}Classe ContaRN
package financeiro.conta;
import java.util.Date;import java.util.List;
import financeiro.usuario.Usuario;import financeiro.util.DAOFactory;
public class ContaRN {
private ContaDAO contaDAO;
public ContaRN() { this.contaDAO = DAOFactory.criarContaDAO(); }
public List<Conta> listar(Usuario usuario) { return this.contaDAO.listar(usuario); }
public Conta carregar(Integer conta) { return this.contaDAO.carregar(conta); }
public void salvar(Conta conta) { conta.setDataCadastro(new Date()); this.contaDAO.salvar(conta); }
public void excluir(Conta conta) { this.contaDAO.excluir(conta); }
public void tornarFavorita(Conta contaFavorita) { Conta conta = this.buscarFavorita(contaFavorita.getUsuario()); if (conta != null) { conta.setFavorita(false); this.contaDAO.salvar(conta); }
contaFavorita.setFavorita(true); this.contaDAO.salvar(contaFavorita); }
public Conta buscarFavorita(Usuario usuario) { return this.contaDAO.buscarFavorita(usuario); }}Classe ContaBean
package financeiro.web;
import java.util.List;
import javax.faces.bean.ManagedBean;import javax.faces.bean.RequestScoped;
import financeiro.conta.Conta;import financeiro.conta.ContaRN;import financeiro.web.util.ContextoUtil;
@ManagedBean(name="contaBean")@RequestScopedpublic class ContaBean {
private Conta selecionada = new Conta();private List<Conta> lista = null;
public void salvar(){ ContextoBean contextoBean = ContextoUtil.getContextoBean(); this.selecionada.setUsuario(contextoBean.getUsuarioLogado()); ContaRN contaRN = new ContaRN(); contaRN.salvar(this.selecionada); this.selecionada = new Conta(); this.lista = null;}
public void editar(){ }
public void excluir(){ ContaRN contaRN = new ContaRN(); contaRN.excluir(this.selecionada); this.selecionada = new Conta(); this.lista = null;}
public void tornarFavorita(){ ContaRN contaRN = new ContaRN(); contaRN.tornarFavorita(this.selecionada); this.selecionada = new Conta();}
public Conta getSelecionada() { return selecionada; }
public void setSelecionada(Conta selecionada) { this.selecionada = selecionada; }
public List<Conta> getLista() { if(this.lista == null){ ContextoBean contextoBean = ContextoUtil.getContextoBean(); ContaRN contaRN = new ContaRN(); this.lista = contaRN.listar(contextoBean.getUsuarioLogado()); } return this.lista; }
public void setLista(List<Conta> lista) { this.lista = lista; } }Classe UsuarioBean (onde eu inserir a opçao de cadastrar conta na hora do registro de usuario.
package financeiro.web;
import java.util.List;
import javax.faces.application.FacesMessage;import javax.faces.bean.ManagedBean;import javax.faces.bean.RequestScoped;import javax.faces.context.FacesContext;
import financeiro.conta.Conta;import financeiro.conta.ContaRN;import financeiro.usuario.Usuario;import financeiro.usuario.UsuarioRN;
@ManagedBean(name = "usuarioBean")@RequestScopedpublic class UsuarioBean {
public Conta getConta() { return conta; }
public void setConta(Conta conta) { this.conta = conta; }
public void setLista(List<Usuario> lista) { this.lista = lista; }
private Usuario usuario = new Usuario(); private String confirmarSenha; private List<Usuario> lista; private String destinoSalvar; private Conta conta = new Conta();
public String novo() { this.destinoSalvar = "usuarioSucesso"; this.usuario = new Usuario(); this.usuario.setAtivo(true); return "usuario";
}
public String editar(){ this.confirmarSenha = this.usuario.getSenha(); return "/publico/usuario"; } public String salvar() { FacesContext context = FacesContext.getCurrentInstance();
String senha = this.usuario.getSenha(); if (!senha.equals(this.confirmarSenha)) { FacesMessage facesMessage = new FacesMessage( "A senha não foi informada corretamente"); context.addMessage(null, facesMessage); return null; } UsuarioRN usuarioRN = new UsuarioRN(); usuarioRN.salvar(this.usuario); if(this.conta.getDescricao() != null){ this.conta.setUsuario(this.usuario); this.conta.setFavorita(true); ContaRN contaRN = new ContaRN(); contaRN.salvar(this.conta); } return this.destinoSalvar; } public String excluir(){ UsuarioRN usuarioRN = new UsuarioRN(); usuarioRN.excluir(this.usuario); this.lista = null; return null; } public String ativar(){ if(this.usuario.isAtivo()){ this.usuario.setAtivo(false); } else { this.usuario.setAtivo(true); } UsuarioRN usuarioRN = new UsuarioRN(); usuarioRN.salvar(this.usuario); return null; } public List<Usuario> getLista(){ if(this.lista == null){ UsuarioRN usuarioRN = new UsuarioRN(); this.lista = usuarioRN.listar(); } return this.lista; } public String atribuirPermissao(Usuario usuario, String permissao){ this.usuario = usuario; java.util.Set<String> permissoes = this.usuario.getPermissao(); if(permissoes.contains(permissao)){ permissoes.remove(permissao); } else { permissoes.add(permissao); } return null; }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((confirmarSenha == null) ? 0 : confirmarSenha.hashCode()); result = prime * result + ((conta == null) ? 0 : conta.hashCode()); result = prime * result + ((destinoSalvar == null) ? 0 : destinoSalvar.hashCode()); result = prime * result + ((lista == null) ? 0 : lista.hashCode()); result = prime * result + ((usuario == null) ? 0 : usuario.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; UsuarioBean other = (UsuarioBean) obj; if (confirmarSenha == null) { if (other.confirmarSenha != null) return false; } else if (!confirmarSenha.equals(other.confirmarSenha)) return false; if (conta == null) { if (other.conta != null) return false; } else if (!conta.equals(other.conta)) return false; if (destinoSalvar == null) { if (other.destinoSalvar != null) return false; } else if (!destinoSalvar.equals(other.destinoSalvar)) return false; if (lista == null) { if (other.lista != null) return false; } else if (!lista.equals(other.lista)) return false; if (usuario == null) { if (other.usuario != null) return false; } else if (!usuario.equals(other.usuario)) return false; return true; }
public Usuario getUsuario() { return usuario; }
public void setUsuario(Usuario usuario) { this.usuario = usuario; }
public String getConfirmarSenha() { return confirmarSenha; }
public void setConfirmarSenha(String confirmarSenha) { this.confirmarSenha = confirmarSenha; }
public String getDestinoSalvar() { return destinoSalvar; } public void setDestinoSalvar(String destinoSalvar) { this.destinoSalvar = destinoSalvar; } }e os JSFTela de cadastro de conta
<?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" xmlns:sec="http://www.springframework.org/security/facelets/tags"><h:head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Cadastro de Contas</title></h:head><h:body> <h1>Cadastro de Contas</h1> <h:form id="edicao"> <h:messages /> <h:inputHidden value="#{contaBean.selecionada.conta }" /> <h:inputHidden value="#{contaBean.selecionada.favorita }" /> <h:panelGrid columns="2"> <h:outputLabel value="Descrição: " for="descricao" /> <h:inputText id="descricao" value="#{contaBean.selecionada.descricao }" required="true" maxLength="45" /> <h:outputLabel value="Saldo Inicial: " for="saldoInicial" /> <h:inputText id="saldoInicial" value="#{contaBean.selecionada.saldoInicial }" size="10"> <f:convertNumber minFractionDigits="2" /> </h:inputText> <h:commandButton value="Salvar" action="#{contaBean.salvar }"> <f:ajax excute="@form" render=":edicao :listagem" /> </h:commandButton> </h:panelGrid>
</h:form>
<h:form id="listagem"> <h:dataTable value="#{contaBean.lista }" var="conta" rendered="#{!empty contaBean.lista }"> <h:column> <f:facet name="header">Descrição</f:facet> #{conta.descricao} </h:column> <h:column> <f:facet name="header">Data Cadastro</f:facet> <h:outputText value="#{conta.dataCadastro }"> <f:convertDateTime pattern="dd/MM/yyyy" /> </h:outputText> </h:column> <h:column> <f:facet name="header">Saldo Inicial</f:facet> <h:outputText value="#{ conta.saldoInicial}" style="text-align: right; display:block;"> <f:convertNumber minFractionDigits="2" /> </h:outputText> </h:column> <h:column> <h:commandLink action="#{contaBean.tornarFavorita }"> <f:ajax execute="@this" render=":listagem" /> <h:graphicImage library="imagens" name="favorita16_#{conta.favorita }.png" /> <f:setPropertyActionListener value="#{conta }" target="#{contaBean.selecionada }" /> </h:commandLink> </h:column> <h:column> <h:commandLink> <f:ajax execute="@this" render=":edicao" /> <h:graphicImage library="imagens" name="editar16.png" /> <f:setPropertyActionListener value="#{conta }" target="#{contaBean.selecionada }" /> </h:commandLink> </h:column> <h:column> <h:commandLink action="#{contaBean.excluir }"> <f:ajax execute="@this" render=":listagem" /> <h:graphicImage library="imagens" name="excluir16.png" /> <f:setPropertyActionListener value="#{conta }" target="#{contaBean.selecionada }" /> </h:commandLink> </h:column> </h:dataTable> </h:form>
</h:body></html>E no cadastro de usuario
<?xml version="1.0" encoding="UTF-8" ?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"><h:head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <title>Cadasro de Usuarios</title></h:head><h:body> <h1>Cadastro de Usuários</h1>
<h:form id="cadastro"> <h:messages /> <h:inputHidden value="#{usuarioBean.usuario.codigo }" /> <h:inputHidden value="#{usuarioBean.usuario.ativo }" /> <h:inputHidden value="#{usuarioBean.destinoSalvar}" />
<h:panelGrid columns="2"> <h:outputLabel value="Nome" for="nome" /> <h:inputText id="nome" Label="Nome" value="#{usuarioBean.usuario.nome }" size="30" maxLength="30" required="true" requiredMessage="Por favor, insira um nome"> <f:validateLength minimum="10" maximum="30" /> </h:inputText> <h:outputLabel value="Data Nascimento" for="data" /> <h:inputText id="data" label="Data Nascimento" value="#{usuarioBean.usuario.nascimento}" size="10" maxlength="10" required="false"> <f:convertDateTime pattern="dd/MM/yyyy" /> </h:inputText> <h:outputLabel value="Celular" for="celular" /> <h:inputText id="celular" label="Celular" value="#{usuarioBean.usuario.celular}" size="10" /> <h:outputLabel value="E-mail" for="email" /> <h:panelGroup> <h:inputText id="email" label="E-mail" value="#{usuarioBean.usuario.email}" size="50" required="true" validatorMessage="e-mail inválido"> <f:validateRegex pattern="[a-zA-Z0-9\-\_\.]+@[a-zA-Z0-9\-\_\.]+" /> </h:inputText> <h:message for="email" /> </h:panelGroup>
<h:outputLabel value="Idioma" for="idioma" /> <h:selectOneMenu id="idioma" value="#{usuarioBean.usuario.idioma}"> <f:selectItem itemValue="pt_BR" itemLabel="Português" /> <f:selectItem itemValue="en_US" itemLabel="English" /> <f:selectItem itemValue="es_ES" itemLabel="Espanol" /> </h:selectOneMenu>
<h:outputLabel value="Login" for="login" /> <h:inputText id="login" label="Login" value="#{usuarioBean.usuario.login}" size="15" maxlength="15" required="true" validatorMessage="Login deve ter no minimo 5 e no máximo 15 caracteres, e só pode ter simbolos '.' e '_'. "> <f:validateRegex pattern="([a-z]|[0-9]|[.]|[_]){2,15}" /> </h:inputText>
<h:outputLabel value="Senha" for="senha" /> <h:inputSecret id="senha" label="Senha" value="#{usuarioBean.usuario.senha}" size="10" maxlength="10" required="true" redisplay="true" />
<h:outputLabel value="Confirmar senha" for="confirmarSenha" /> <h:inputSecret id="confirmarSenha" label="Confirmar senha" value="#{usuarioBean.confirmarSenha}" size="10" maxlength="10" required="true" redisplay="true" />
</h:panelGrid> <h:panelGroup rendered="#{empty contextoBean.usuarioLogado}"> <fieldset><legend>Conta Inicial</legend> <h:panelGrid columns="2"> <h:outputLabel value="Descrição" for="descricao" /> <h:inputText id="descricao" label="Descrição" value="#{usuarioBean.conta.descricao}" required="true" maxlength="45" /> <h:outputLabel value="Saldo inicial" for="saldoInicial" /> <h:inputText id="saldoInicial" label="Saldo Inicial" value="#{usuarioBean.conta.saldoInicial}" size="10"> <f:convertNumber minFractionDigits="2" /> </h:inputText> </h:panelGrid> </fieldset> </h:panelGroup> <h:commandButton action="#{usuarioBean.salvar}" value="Salvar" /> </h:form>
</h:body></html>Obrigado.
Obrigado.
GOSTEI 0
Dyego Carmo
14/09/2011
Pelo visto o que está acontecendo é que vc esta alterando o valor do objeto depois de persisti-lo... o hibernate vai tentar atualiza-lo e esta "truncado" a informacao... chegou a tentar dar um ".evict" no objeto depois de persisti-lo ?
GOSTEI 0