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:
<?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 package="br.com.rhunificado.model">
<class name="Usuario" table="usuario">
<id name="codigo" column="codigo" type="int">
<generator class="sequence">
<param name="sequence">usuario_sequence</param>
<param name="parameters">START WITH 2</param>
</generator>
</id>
<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>
</hibernate-mapping>
<?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 package="br.com.rhunificado.model">
<class name="UsuarioCompany" table="usuario_company">
<id name="codigo" column="codigo" type="int">
<generator class="native"/>
</id>
<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>
</hibernate-mapping>