Ir para conteúdo
Fórum Script Brasil
  • 0

Problema de gravação de colunas com hibernate


dennnis

Pergunta

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.

view plaincopy to clipboardprint?

+-----------+-------------+------------+---------------------+---------------+----------+

| 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 | |

+-----------+-------------+------------+---------------------+---------------+----------+

Alguém tem alguma idéia do que pode ser?

Vou postar os codigos fontes, talvez alguém possa me ajudar.

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")
@RequestScoped
public 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")
@RequestScoped
public 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 JSF Tela 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.

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...