Projeção

Para criar querys que retornem apenas campos específicos, não é possível através das Derived Queries, para isso é utilizado Native Query.

Entretanto, para receber esse campos, é preciso criar uma Projeção. Uma Projeção é uma interface que define métodos get() para os atributos consultados.

public interface FuncionarioProjecao {
    Integer getId();
    String getNome();
    Double getSalario();
}

Também é possível utilizar uma classe DTO.

public class FuncionarioDto {
    private Integer id;
    private String nome;
    private Double salario;

    //getter e setter

    //construtor recebendo os atributos
    //na ordem da query
}

Uma classe dá muito mais trabalho de escrever e manter, mas pode ter uma vantagem, pois podemos adicionar métodos mais específicos que podem fazer sentido para a view (por exemplo, os de formatação).

O que foi aprendido?