Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Ordem

Gostaria de saber o porquê desta ordem: public interface CargoRepository extends CrudRepository<Cargo, Integer>{

se eu não posso fazer assim public interface CargoRepository extends CrudRepository<Integer, Cargo>{

e porque não usa o campo descrição na interface também?

2 respostas

A interface CrudRepository, bem como outras interfaces para repositórios, tem uma ordem dentro da implementação delas... Se você entrar na pasta do JpaRepository verá que ela trata seu primeiro generic como classe e seu segundo como a primary key. Deixe-me tentar explicar melhor:

@NoRepositoryBean
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {

essa é a assinatura da interface JpaRepository, no qual ela deixa explícito a ordem dos generics, se você olhar os métodos dessa interface, verá que o retorno dos métodos são baseados no "T".

@Override
    List<T> findAll();

    /*
     * (non-Javadoc)
     * @see org.springframework.data.repository.PagingAndSortingRepository#findAll(org.springframework.data.domain.Sort)
     */
    @Override
    List<T> findAll(Sort sort);

    /*
     * (non-Javadoc)
     * @see org.springframework.data.repository.CrudRepository#findAll(java.lang.Iterable)
     */
    @Override
    List<T> findAllById(Iterable<ID> ids);

E o parâmetro de busca na maior parte do tempo é o ID da entidade, sendo assim, se você quiser substituir o

findById(ID id) 

terá que criar seu próprio método de busca, como por exemplo:

findByDescricao(String descricao);
solução!

Obrigado!