Soft delete com Spring Boot
Alguma ideia de cascatear delete utilizando soft delete com Spring Boot? Mais especificamente em uma relação unidirecional ManyToOne
Parece ser o mesmo problema relatado pelo colega axxterisco em outra publicação: https://www.tabnews.com.br/axxterisco/duvida-relacoes-no-spring-boot
Pesquisando um pouco, parece que não há como "cascadear" o on delete quando se usa o soft delete no spring boot. Um dos exemplos que encontrei, é realizar o seguinte procedimento:
Classes e relacionamentos:
Construir o seguinte sql:
e ao chamar o service para realizar uma exclusão, também chamar o sql que construimos acima:
Massa, obrigado pela ajuda! Seguindo o seu exemplo, pensei em utilizar um listener na classe user, para que todas as classes associadas à ele sejam deletadas antes de sua exclusão. Ficaria mais ou menos assim:
```java
@EntityListeners(UserListener.class)
@SQLDelete("UPDATE User SET deleted = TRUE WHERE id = ?")
@Where(clause = "deleted = FALSE")
public class User {
@OneToMany(mappedBy = "user", fetch = EAGER, cascade=ALL, orphanRemoval = true)
private List usernotes;
}
```
```java
public class UserListener {
@PreRemove
private void beforeDelete(User user) {
noteRepo.deleteByUserId(user.getId());
}
}
```
Assim, o método de deletar um usuário não fica poluído com vários repositórios ou serviços sendo chamados