Boa tarde! Pessoal, sou novo aqui e em java/jpa e estou precisando de uma ajuda de vcs. Estou com a seguinte situação: Tenho a tabela notafiscal mapeada com a amarração @ManyToOne(fetch = FetchType.EAGER) na tabela agenda, que está com a amarração @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.REFRESH, mappedBy = “agendamento”, orphanRemoval = false). Posso ter várias notas para apenas um agendamento
O que preciso: Que quando eu cancele o agendamento de uma nota, o jpa verifique se existe alguma outra nota com esse id de agenda antes de excluir o registro da agenda, se existir não deverá excluir. Quando faço essa ação hoje, da forma que está, o agendamento é excluído mesmo tendo outra nota amarrada no mesmo agendamento.
Tem coisas que não tem jeito mesmo, você precisa tomar o controle da situação e dizer ao JPA que é você que manda.
Esta é uma situação assim.
Você pode ter, até mesmo, um controle duplo: no banco de dados (que é o que deseja) e outro no sistema.
Como?
Antes de solicitar a exclusão da agenda, com cascade, faça um select para localizar as notas associadas a ela, caso haja notas além da que deseja cancelar, proceda com o cancelamento da nota. Caso contrário, exclua tudo.
Ah, eu evitaria o uso de cascade. Sei que é uma opção, que existe e que pode ser utilizada, mas, não vejo necessidade/oportunidade nesta situação.
Muito obrigado! Vou seguir desta forma que você orientou.