Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Tem como fazer exclusão lógica, JpaRepository Spring Boot?

Existe alguma forma de anotar um atributo da classe, para que toda consulta pelo repository retorne apenas os que estiverem ativos/não excluídos?

Obrigado

@Entity
public class Categoria {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String nome;
    @Enumerated(EnumType.STRING)
    private TipoCategoria tipo;
    private String cor;
    /* Anotar algo aqui, para listar só qnd for verdadeiro*/
    private boolean ativo;
}
public interface CategoriaRepository extends JpaRepository<Categoria, Long>{
    /* retorna uma lista de ativos true */
    List<Categoria> findByTipo(TipoCategoria tipo);
}
@GetMapping
public List<Categoria> lista() {
    /* retorna uma lista de ativos true */
    return categoriaRepository.findAll();
}
1 resposta
solução!

Oi Jeferson,

Você pode fazer a consulta filtrando pelo atributo, sem precisar adicionar anotações na classe:

List<Categoria> findByTipoAndAtivoIsTrue(TipoCategoria tipo);

Mas somente vai funcionar nessa consulta em específico.

Para deixar fixo em todas as consultas, existe a anotação @Where, que você coloca em cima da entidade:

@Entity
@Where(clause = "ativo is true")
public class Categoria {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String nome;
    @Enumerated(EnumType.STRING)
    private TipoCategoria tipo;
    private String cor;
    private boolean ativo;
}

Entretanto, essa anotação não é do Spring e sim do Hibernate.

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software