seguinte possuo um metodo que faz o seguinte:
//logica
usuario.setEmpresas(empresas); //passo a lista de empresas e ele adiciona corretamente
DAOUsuario.update(usuario);
//logica
até ae tudo bem, quando é pra adicionar ele faz isso corretamente, mais suponha que eu tenho agora 8 empresas para esse usuario e agora removi 3 empresas dessa LISTA, e faço novamente
//logica
usuario.setEmpresas(empresas);
DAOUsuario.update(usuario);
//logica
ele não remove as 3 que removi da lista, é como se ele somente adicionasse e não pode remover.
e coloquei para que o cascade seja “all”
segue meu mapeamento:
[code]<?xml version="1.0" encoding="UTF-8"?>
usuario_sequence START WITH 2 <property name="nome" column="nome" type="string"/>
<property name="login" column="login" type="string"/>
<property name="senha" column="senha" type="string"/>
<property name="ativo" column="ativo" type="boolean"/>
<set name="permissao" table="usuario_permissao" cascade="all">
<key column="usuario"/>
<element column="permissao" type="string"/>
</set>
<list name="empresas" cascade="all">
<key column="codigoDoUsuario" not-null="true"/>
<list-index column="companyIdx"/>
<one-to-many class="br.com.rhunificado.model.UsuarioCompany"/>
</list>
</class>
[/code]
[code]<?xml version="1.0" encoding="UTF-8"?>
<many-to-one name="codigoDoUsuario" column="codigoDoUsuario" not-null="true" insert="false" update="false" class="br.com.rhunificado.model.Usuario"/>
<property name="codigoExterno" column="codigoExterno" type="int"/>
</class>
[/code]