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
[code]<?xml version="1.0" encoding="UTF-8"?>
[/code]
Pessoa.java
[code]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;
}
}
[/code]
Gostaria que alguém me ajudasse!!
J2Alex
Novembro 1, 2006, 1:19pm
#2
Posta o código que está tentando gravar…
[code]
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();
}[/code]
sapulha
Novembro 1, 2006, 2:02pm
#4
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.
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
Novembro 1, 2006, 2:47pm
#6
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);
Meu amigo deu certo… era isso mesmo… obrigado!!!