1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Duvida basica sobre Cascade no Hibernate/JPA

Estou com uma duvida que acredito ser bem básica, sobre o uso do Cascade nos relacionamentos do Hibernate/JPA.

O que entendi até agora é:

Tenho um objeto Pessoa e tenho um objeto Endereço. Pessoa possui um objeto Endereço, e o relacionamento é unidirecional de Pessoa para endereço. O mapeamento é OneToOne. Se eu criar um objeto Endereço que não existe no banco de dados, e também um Pessoa que não existe, e persistir o objeto Pessoa, automaticamente o objeto Endereço será persistido no banco de dados (caso esteja mapeado com Cascade ALL ou PERSIST).

Até aí tudo bem.

Mas e quando eu quero somente alterar a referência à um endereço? Tenho 2 Endereços já cadastrados no banco, e 1 pessoa. (Eu sei que o relacionamento seria OneToOne, mas vamos imaginar) Num determinado momento, quero alterar o endereço dessa pessoa para o outro cadastrado no banco.

Um cascade MERGE iria fazer o que nesse caso? Iria alterar os dados do endereço atual? Ou iria de fato trocar a referência de endereços?

A mesma coisa com o Cascade DELETE: Se eu tiver um relacionamento ManyToMany e usar tal Cascade, os elementos que serão excluidos do banco serão os da tabela relacional ou da tabela referenciada?

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags jpa hibernate ou faça a sua própria pergunta.