Mapeamento com hibernate many-to-one unidirecional

1 resposta
V

Olá amigo

Uma dúvida: Tenho 2 tabelas no BD a 1ª chamada usuário e a 2ª endereco.
A leitura é um endereco possui muitos usuarios, portanto unidirecional.
No BD tenho uma chave estrangeira de id_Endereco na Tabela Usuario. Quando salvo os objetos tanto de usuario como enderecos o campo id_Endereco (FK) não é atualizado na tabela Usuário.
id_Endereco é auto-increment na tabela endereco.
No Hibernate foi feito no hbm do bean Usuario tendo o mapeamento :

A minha dúvida é a seguinte: O hibernate não teria que fazer essa atualização do campo a Id_Endereco da tabela Usuario na medida que eu cadastrar o usuário e o endereço ?
No banco de dados o FK id_Endereco está com update cascade e delet restrict na tabela usuario.

Como fazer para que seja atualizada a minha chave estrangeira na tabela usuario ???

1 Resposta

maykoone

Cara eu dei uma consultada na referência do Hibernate, e lá há uma recomendação dizendo que não tem sentido em usar operações cascade em associações many-to-one ou many-to-many.

Pelo que entendi só vai funcionar a transação em cascata se vc salvar a entidade Endereço contendo as referências para Usuário, não importa se é unidirecional ou bidirecional, a semantica é sempre essa:

[list]Se um pai é passado para persist(), todos os filhos são passados para persist()[/list]
[list]Se um pai é passado para merge(), todos os filhos são passados para merge()[/list]
[list]Se um pai for passado para save(), update() ou saveOrUpdate(), todos os filhos passarão
para saveOrUpdate()[/list]
[list]Se um filho transiente ou desanexado se tornar referenciado pelo pai persistente, ele será
passado para saveOrUpdate()[/list]
[list]Se um pai for deletado, todos os filhos serão passados para delete()[/list]

Criado 17 de junho de 2011
Ultima resposta 17 de jun. de 2011
Respostas 1
Participantes 2