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:
@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;
}
@SQLDelete("UPDATE Note SET deleted = TRUE WHERE id = ?")
@Where(clause = "deleted = FALSE")
public class Note { }
Construir o seguinte sql:
public interface NotesRepository extends JpaRepository {
@Query("UPDATE Notes n SET n.deleted = TRUE WHERE n.user.id = :id")
public void deleteByUserId(Long id);
}
e ao chamar o service para realizar uma exclusão, também chamar o sql que construimos acima:
public void deleteUser(Long userId) {
User user = userrepo.deleteById(userId);
noteRepo.deleteByUserId(userId);
}