Olá, Gostaria de saber se existe a possibilidade de cancelar um cascade de um merge caso o programador queira fazer isso. Algo como um evict.
Ex.:
Classe Setor
que possui uma lista de Pessoa
com um CascadeType.MERGE
. Ou seja, os merges que forem feitos no Setor serão propagados para Pessoa
.
Num sistema web consulto os dados de Setor
, exibindo na interface o nome do setor e as pessoas daquele setor. O usuário altera o nome do setor e manda salvar.
Sabemos que, caso a view tenha todos os dados e faça um bind com os dados do setor em um objeto do tipo Setor
, ele teria que fazer uma nova consulta para inicializar a a lista de pessoas antes do update. Mas, quero evitar essa nova consulta (a collection é LAZY) à tabela Pessoa
.
Perguntas:
- Então, caso o cascade seja propagado e a lista esteja vazia porque ainda não foi inicializado, removeríamos o vínculo entre o setor e as pessoas da lista?
- O cascade obriga o attach da lista de pessoas também, mesmo ela sendo lazy?
- Se a resposta à primeira pergunta for sim, como funcionaria a estratégia de merge para uma lista EAGER?
- Há algum método no EntityManager ou outra classe da JPA que permita cancelar o cascade de um merge em um caso de uso específico?