Atualizar List em uma classe usando Hibernate

4 respostas
D

Olá pessoal...

Estou tendo dificuldades aqui pra atualizar uma List de uma classe.
É o seguinte, tem a classe Cliente que tem uma coleção de dependentes. Tais dependentes são adicionados (ou não) ao Cliente na hora de criar um novo cliente. E posteriormente podem ser adicionados mais dependentes ao cliente.
Mas não estou conseguindo fazer isso.

Minha classe cliente:
public class Cliente implements Pessoa, java.io.Serializable {
    
    (...) outros atributos(...)
    private List<Dependente> dependentes;

    public List<Dependente> getDependentes() {
        return dependentes;
    }

    public void setDependentes(List<Dependente> dependentes) {
        this.dependentes = dependentes;
    }
}
Minha classe Dependente:
public class Dependente implements Pessoa, java.io.Serializable {
    
    (...)outros atributos(...)
    private Cliente cliente;

    (...)getters e setters(...)
}
Mapeamento de Cliente:
<hibernate-mapping>
    <class name="model.Cliente" table="clientes">
        <id 
            name="id"
            column="id_cliente">
            <generator class="increment"/>
        </id>

        (...)

        <set name="dependentes" inverse="true" cascade="all" lazy="true">
            <key column="id_cliente"/>
            <one-to-many class="model.Dependente"/>
        </set>    
    </class>
</hibernate-mapping>
Mapeamento de Dependente:
<hibernate-mapping>
    <class name="model.Dependente" table="dependentes">
        <id 
            name="id" 
            column="id_dependente">
            <generator class="native"/>
        </id>

        (...)

        <many-to-one
            name="cliente"
            column="id_cliente"
            class="model.Cliente"
            not-null="true"/>
    </class>
</hibernate-mapping>

Eu sei que não posso simplesmente dar um Session.save(Dependente tal)...
Minha idéia é que eu tenho que recuperar no banco o cliente que eu quero atualizar a lista de dependentes, adicionar um novo dependente na sua lista e daí atualizar sua tabela no banco...
Mas não estou conseguindo fazer isso..
Alguém pode me dar uma luz sobre como faço isso?
Obrigado.

4 Respostas

M

Mas está mostrando algum erro ao tentar fazer isso ?

Vc está passando o parametro dependente.cliente.id_cliente, por exemplo, na hora de cadastrar novos dependentes ?

cleriston

Põe o

inverse="true" no mapeamento do Dependente(tira do mapeamendo do Cliente), testa e dá um retorno se deu certo ou não

D

[quote=cleriston]Põe o

inverse="true"

Olá pessoal, obrigado pelas respostas.
Cleriston, eu tentei fazer o que vc falou mas dá o seguinte erro de mapeamento:

Attribute "inverse" must be declared for element type "many-to-one"

Na verdade eu tenho a idéia de como fazer esse update na tabela (como falei acima) mas não tô sabendo como implementar isso no hibernate.
Como seria a Query que eu faria pra trazer o cliente e daí colocar um dependente na sua lista de dependentes? É nisso q tô empacado.
De qualquer forma muito obrigado pela ajuda

plentz

O Hibernate já está dizendo o que você tem que fazer aqui: colocar o inverse no relacionamento many-to-one.

Criado 5 de julho de 2007
Ultima resposta 23 de jul. de 2007
Respostas 4
Participantes 4