Hibernate mapeamento one-to-many com delete-orphan

Pessoal,

Tenho os seguintes mapeamentos no hibernate:
Mapeamento para Cliente.

<class name="br.com.callink.model.pojo.impl.Cliente" table="tb_cliente"> <id name="id" type="int" column="id_cliente"> <generator class="native"/> </id> <property name="nome" type="string" column="nome_cliente" not-null="true"/> <property name="razaoSocial" type="string" column="razao_social_cliente"/> <property name="cpf" type="string" column="cpf_cliente" /> <property name="sexo" type="string" column="sexo_cliente" /> <property name="dataNascimento" type="date" column="data_nascimento_cliente" /> <set name="telefones" cascade="all,delete-orphan" lazy="false"> <key column="id_cliente"/> <one-to-many class="br.com.callink.model.pojo.impl.Telefone"/> </set> <set name="enderecos" cascade="all" inverse="true"> <key column="id_cliente"/> <one-to-many class="br.com.callink.model.pojo.impl.Endereco"/> </set> </class>
Mapeamento para telefone

<class name="br.com.callink.model.pojo.impl.Telefone" table="tb_telefone"> <id name="id" type="int" column="id_telefone"> <generator class="native"/> </id> <property name="numero" type="string" column="numero_telefone" not-null="true"/> <property name="ramal" type="string" column="ramal_telefone" /> <many-to-one name="tipoTelefone" class="br.com.callink.model.pojo.impl.TipoTelefone" column="id_tipo_telefone" cascade="none" not-null="true" lazy="false"/> <many-to-one name="cliente" class="br.com.callink.model.pojo.impl.Cliente" column="id_cliente" cascade="none" not-null="true"/> <many-to-one name="ddd" class="br.com.callink.model.pojo.impl.DDD" column="id_ddd" cascade="none" not-null="true" lazy="false"/> </class>

Quero o seguinte comportamento: Ao alterar o cliente e remover algum telefone que esse seja apagado do banco.
Olhei na referência do Hibernate e vi que deveria mapear com delete-orphan, mas não está funcionando, pois ele tenta definir na tb_telefone o id_cliente como null, o que não funciona pois esse campo é not-null.

vi no log do hibernate que ele tenta executar o seguinte:

update tb_telefone set id_cliente=null where id_cliente=?

Alguém sabe fazer isso funcionar??

até mais.

Olá,

você já tentou “all-delete-orphan”?

acabei de tentar e não funciona

tem alguma diferença entre all-delete-orphan e all,delete-orphan???

Fiz o mapeamento da seguinte maneira e parece estar funcionando.

<set name="telefones" inverse="true" cascade="all-delete-orphan" lazy="false">
            <key column="id_cliente"/>
            <one-to-many class="br.com.callink.model.pojo.impl.Telefone"/>
        </set>

Porém tem outro problema, uso o DWR para enviar os dados e monto um objeto javascript que será convertido para um POJO Cliente com todas as informações preenchidas.
Só que quando envio o pojo via java script é outra instancia, diferente da que tenho no hibernate, então ele não consegue atualizar, por enquanto tenho que fazer um load e sair setando as propriedades e dando clear e addAll nas collections para obter o resultado desejado.