1
resposta

CriteriaQuery não aceita o argumento

Boa noite , Estou com um problema na linha:

criteriaQuery.where(criteriaBuilder.like(root.get("descricao"), descricao + "%"));
Error: The method like(Expression<String>, String) in the type CriteriaBuilder is not applicable for the arguments (Path<Object>, String);

alguém poderia me dizer o que pode ser?

import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;

import java.io.Serializable;
import java.util.List;

public class RamoAtividades implements Serializable {

    private static final long serialVersionUID = 1L;

    private EntityManager manager;

    public RamoAtividades() {

    }

    public RamoAtividades(EntityManager manager) {
        this.manager = manager;
    }

    public List<RamoAtividade> pesquisar(String descricao) {
        CriteriaBuilder criteriaBuilder = manager.getCriteriaBuilder();

        CriteriaQuery<RamoAtividade> criteriaQuery = 
        criteriaBuilder.createQuery(RamoAtividade.class);       
        Root<RamoAtividade> root = criteriaQuery.from(RamoAtividade.class);         
        criteriaQuery.select(root);             
        criteriaQuery.where(criteriaBuilder.like(root.get("descricao"), descricao + "%"));      

        TypedQuery<RamoAtividade> query = manager.createQuery(criteriaQuery);

        return query.getResultList();
    }
}
1 resposta

Oi Lucas!

Tenta fazer assim pra ver se compila:

criteriaQuery.where(criteriaBuilder.like(root.<String>get("descricao"), descricao + "%"));