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?