Jump to content
Fórum Script Brasil
  • 0

Problema de gravação de colunas com hibernate


dennnis

Question

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 to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...