Ajuda relacionamento Hibernate

2 respostas
M

Boa noite pessoal, estou começando agora com hibernate e estou tendo problemas com relacionamento,
vai um exemplo simples do que eu estou tentando fazer,

Classes

public class Pessoa {
	private Integer id;
	private String nome;
	private Endereco endereco = new Endereco();
	private Set<Contato> listContato = new HashSet<Contato>();
            
            //Get and Set
}

public class Endereco {
	private Integer id;
	private String rua;

            //Get and Set
}

public class Contato {
	private int id;
	private String telefone;
            private Pessoa pessoa = new Pessoa();

            //Get and Set

}

a única forma que eu consegui fazer funcionar com hbm.xml foi assim

//Pessoa.hbm.xml
    <class name="Pessoa" table="pessoa">
        <id name="id" column="id">
            <generator class="increment"/>
        </id>

        <property name="nome"/>

        <one-to-one name="endereco" class="Endereco" cascade="all"/>

        <set name="listContato" table="contato" cascade="all">
            <key column="pessoa_id"/>
            <one-to-many class="Contato"/>
        </set>

    </class>

     //Endereco.hm.xml
         <class name="Endereco" table="endereco">
        <id name="id" column="pessoa_id">
            <generator class="native"/>            
        </id>

        <property name="rua"/>
    </class>


    //Contato.hbm.xml
        <class name="Contato" table="contato">
        <id name="id" column="id">
            <generator class="increment"/>  
        </id>

        <property name="telefone"/>

        <many-to-one name="pessoa" class="Pessoa" cascade="all">  
            <column name ="pessoa_id" not-null="true"/>  
        </many-to-one>  
    </class>

Para listar os dados está blz, mas quando atualizo qualquer pessoa, e gerado uns registros nulos na tabela pessoa,
e sempre da erros de insersão quando adiciono um endereco em pessoa.

se alguém puder me ajudar a resolver, isso está me tirando o sono…

valew

2 Respostas

M

Qual é o erro gerado ?

M

O hibernate monta a seguinte String sql;

insert into endereco(rua) values (?)

eu preciso que fique assim, pois na tabela endereco, existe o campo (pessoa_id) que se relaciona com tabela pessoa

insert into endereco(rua, pessoa_id) values (?,?)

Eu até vi alguns exemplos em que o objeto Endereco tem uma Pessoa, porém não consegui mapear no meu Endereco.hbm.xml,
porém essa foi a unica forma que consegui fazer funcionar.

valew

Criado 11 de fevereiro de 2009
Ultima resposta 12 de fev. de 2009
Respostas 2
Participantes 2