Критерии выбора возврата Коллекции вместо Списка. Как исправить эту ошибку? - PullRequest
0 голосов
/ 12 февраля 2020

Обычно я использую критерии для получения имени и списка из хранилища.

Мой конструктор:

public Servidor(String nome, List<VinculoFuncional> vinculosFuncionais) {
    super(nome);
    this.vinculosFuncionais = vinculosFuncionais;
}

Моя реализация:

@Override
public List<Servidor> buscarServidorPorCpf(Long cpf) {
    CriteriaBuilder cb = entityManager.getCriteriaBuilder();
    CriteriaQuery<Servidor> query = cb.createQuery(Servidor.class);
    Root<Servidor> servidorRoot = query.from(Servidor.class);

    List<Predicate> predicates = new ArrayList<>();

    if(cpf != null) {
        predicates.add(cb.equal(servidorRoot.get("cpf"), cpf));
    }

    query.multiselect(servidorRoot.get("nome"), servidorRoot.get("vinculosFuncionais"));

    query.where(predicates.toArray(new Predicate[0]));
    return entityManager.createQuery(query).getResultList();
}

Мой контроллер:

@GetMapping
public List<Servidor> buscarServidor(@RequestParam Long cpf) {
    return repository.buscarServidorPorCpf(cpf);
}

Ошибка, которую я получаю:

org.hibernate.hql.internal.ast.QuerySyntaxException: Невозможно найти соответствующий конструктор в классе [br.gov.dataprev .siprev.modelo.servidor.Servidor]. Ожидаемые аргументы: java .lang.String, java .util.Collection [выберите новый br.gov.dataprev.siprev.modelo.servidor.Servidor (генерируетсяAlias0.nome, созданAlias0.vinculosFuncionais) из br.gov.dataprev .siprev.modelo.servidor.Servidor as Генерируемый Алиас0, где генерируемый Алиас0.cpf = 84579030478L]; вложенное исключение: java .lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: невозможно найти соответствующий конструктор в классе [br.gov.dataprev.siprev.modelo.servidor.Servidor]. Ожидаемые аргументы: java .lang.String, java .util.Collection [выберите новый br.gov.dataprev.siprev.modelo.servidor.Servidor (генерируетсяAlias0.nome, созданAlias0.vinculosFuncionais) из br.gov.dataprev .siprev. класс [br.gov.dataprev.siprev.modelo.servidor.Servidor]. Ожидаемые аргументы: java .lang.String, java .util.Collection [выберите новый br.gov.dataprev.siprev.modelo.servidor.Servidor (generateAlias0.nome, генерируется Alas0.vinculosFuncionais) из br.gov.dataprev .siprev.modelo.servidor.Servidor as Генерируемый Алиас0, где генерируемый Алиас0.cpf = 84579030478L]; вложенное исключение: java .lang.IllegalArgumentException:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...