Java c/ Hibernate - Não Grava

6 respostas
P

Criei uma tabelam Pessoa e outra Endereço, efetuei os mapeamentos devidos - pelo menos no meu entendimento. Esta gravando corretamente na tabela endereço, porém, na Tabela Pessoa o campo "id_endereco" não esta gravando, e eu não consegui ententer o porque disso!!!!

esse é o mapeamento de Pessoa.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping
        PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="Pessoa">
        <!-- Identificador da classe -->         
        <id name="id">
            <generator class="native"></generator>
        </id>     
        <!-- Propriedades da classe -->
        <property name="nomeP"/>
        <property name="telefone"/>
        <property name="email"/>    
        <!-- Relacionamento da classe -->
        <many-to-one name="endereco" column="id_endereco" class="Endereco" cascade="save-update"/>            
    </class>    
</hibernate-mapping>
Endereco.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping
        PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="Endereco">
      <!-- Identificador da classe -->       
        <id name="id">
            <generator class="native"></generator>
        </id>              
        <property name="bairro"/>
        <property name="cidade"/>
        <property name="complemento"/>
        <property name="estado"/>
        <property name="numero"/>
        <property name="rua"/>
        <property name="cep"/>        
    </class>
</hibernate-mapping>
Pessoa.java
public class Pessoa
{
    private Integer id;
    private String nomeP;   
    private String telefone;
    private String email;
    private Endereco endereco;

    public Pessoa() 
    {
    }

    public Integer getId() 
    {
        return id;
    }

    public void setId(Integer id) 
    {
        this.id = id;
    }

    public String getNomeP() 
    {
        return nomeP;
    }

    public void setNomeP(String nomeP) 
    {
        this.nomeP = nomeP;
    }

    public String getEmail() 
    {
        return email;
    }

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

    public String getTelefone() 
    {
        return telefone;
    }

    public void setTelefone(String telefone) 
    {
        this.telefone = telefone;
    }

    public Endereco getEndereco() 
    {
        return endereco;
    }

    public void setEndereco(Endereco val) 
    {
        this.endereco = val;
    }   
}

Gostaria que alguém me ajudasse!!

6 Respostas

J2Alex

Posta o código que está tentando gravar…

P
public static void main(String[] args) 
     {
        Session sessao;
        sessao = HibernateUtility.getSession(); //Abrindo uma sessão
        Transaction transaction = 
        sessao.beginTransaction(); //Iniciando uma transação          
            
        Pessoa pessoa = new Pessoa();
        Endereco endereco = new Endereco();
        String p1, p2, p3, p4, p5, p6, p7, p8, p9, p10;
        Integer p10i;
        p1=JOptionPane.showInputDialog("Nome: ");
        System.out.println(p1);
        p2=JOptionPane.showInputDialog("Endereço - Rua: ");
        System.out.println(p2);
        p10=JOptionPane.showInputDialog("Número: ");
        System.out.println(p10); 
        p10i=Integer.parseInt(p10);
        p3=JOptionPane.showInputDialog("Bairro: ");
        System.out.println(p3);
        p5=JOptionPane.showInputDialog("Complemento: ");
        System.out.println(p5);
        p7=JOptionPane.showInputDialog("Cidade: ");
        System.out.println(p7);               
        p4=JOptionPane.showInputDialog("Estado: ");
        System.out.println(p4);                        
        p6=JOptionPane.showInputDialog("CEP: ");
        System.out.println(p6);                                       
        p8=JOptionPane.showInputDialog("Telefone: ");
        System.out.println(p8);
        p9=JOptionPane.showInputDialog("email: ");
        System.out.println(p9);
                
        endereco.setRua(p2);
        endereco.setNumero(p10i);
        endereco.setBairro(p3);        
        endereco.setComplemento(p5);
        endereco.setCidade(p7);
        endereco.setEstado(p4);
        endereco.setCep(p6);        
        sessao.save(endereco);
        
        pessoa.setNomeP(p1); 
        pessoa.setTelefone(p8);
        pessoa.setEmail(p9);
        endereco.getPessoas().add(pessoa);
        sessao.save(pessoa);
        
        transaction.commit(); //Finalizando a transação
        sessao.close();       //Fechando a sessão
        endereco.ver();
    }
sapulha

Simplesmente não grava, ou está dando alguma exceção ?
Tenta colocar um try/catch pra ver, pode ser alguma exceção no meio do caminho.

P

Simplesmente não grava, ou seja, apenas o campo “id_endereco” na tabela Pessoa não grava, os demais campos estão gravando…
vou tentar o try…

J2Alex

Substitua o trecho:

pessoa.setNomeP(p1); 
pessoa.setTelefone(p8);
pessoa.setEmail(p9);
endereco.getPessoas().add(pessoa);
sessao.save(pessoa);

por

pessoa.setNomeP(p1); 
pessoa.setTelefone(p8);
pessoa.setEmail(p9);
pessoa.setEndereco(endereco);   // Essa linha
sessao.save(pessoa);
P

Meu amigo deu certo… era isso mesmo… obrigado!!!

Criado 1 de novembro de 2006
Ultima resposta 1 de nov. de 2006
Respostas 6
Participantes 3