Atualizando objetos com relação many-to-many no hibernate

0 respostas
J

Pessoal, tenho um relacionamento many-to-many mapeado assim.

<class name="pacote.LinhaDeDiscussao" table="linhas">
        <id name="id" type="int" unsaved-value="null" >
            <column name="id_linha" sql-type="int" not-null="true"/>
            <generator class="native"/>
        </id>
//outras coisas...
<set name="discussoes" table="discussoeslinhas" inverse="true" >
            <key column="id_linha"  />
            <many-to-many column="id_discussao" class="pacote.Discussao" />
        </set>
...

e a outra classe:

<class name="pacote.Discussao" table="discussoes" >
       <id name="id" type="int" unsaved-value="null" >
            <column name="id_discussao" sql-type="int" not-null="true"/>
            <generator class="native"/>
        </id>

<list name="linhas" table="discussoeslinhas" lazy="false" >
            <key column="id_discussao" />
            <list-index column="posicao_na_discussao" />
            <many-to-many column="id_linha" class="pacote.LinhaDeDiscussao" />
        </list>

Como dá para ver, as linhas de uma discussão estão num array, e a posição é armazenada na coluna “posicao_na_discussao”. Durante o processamento, uma linha se altera e por causa disso as linhas são reordenadas e eu tento dar um update na discussão para que os novos índices de posição se reflitam no banco, com esse código:

Iterator it = linha.getDiscussoes().iterator();
        while(it.hasNext())
            sessao.update((Discussao)it.next());

Mas acontece que não atualiza! Já tentei mudar o estilo de cascade para all, save-update, mas ai dá um erro:

org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

Alguma idéia?
Valeu.

Criado 15 de junho de 2005
Respostas 0
Participantes 1