Galera, estou com dificuldade de pesquisar livros na table por preço e data. Por titulo e isbn funciona bem, alguém poderia me ajudar? Segue o código:
DAO listaTodosPaginada (Modificado por @Gilson Araujo de Souza encontrado aqui no fórum, Post original)
public List<T> listaTodosPaginada(int firstResult, int maxResults, String coluna, Double valor,
String campoOrdenacao, SortOrder sentidoOrdenacao) {
EntityManager em = new JPAUtil().getEntityManager();
CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
Root<T> root = query.from(classe);
// Valor do campo de busca diferente de nulo
if (valor != null) {
query = query.where(em.getCriteriaBuilder().like(root.<String>get(coluna), valor + "%"));
} else if (campoOrdenacao != null) { // campo ordenação selecionado
if (SortOrder.ASCENDING.equals(sentidoOrdenacao)) {
query = query.orderBy(em.getCriteriaBuilder().asc(root.<String>get(campoOrdenacao)));
}
if (SortOrder.DESCENDING.equals(sentidoOrdenacao)) {
query = query.orderBy(em.getCriteriaBuilder().desc(root.<String>get(campoOrdenacao)));
}
}
List<T> lista = em.createQuery(query).setFirstResult(firstResult).setMaxResults(maxResults).getResultList();
em.close();
return lista;
}
LivroDataModel
@Override
public List<Livro> load(int inicio, int quantidade, String campoOrdenacao, SortOrder sentidoOrdenacao,
Map<String, Object> filtros) {
String titulo = (String) filtros.get("titulo");
DAO dao = new DAO<Livro>(Livro.class);
if (filtros.get("titulo") != null) {
return dao.listaTodosPaginada(inicio, quantidade, "titulo", titulo, campoOrdenacao, sentidoOrdenacao);
} else if (filtros.get("isbn") != null) {
String isbn = (String) filtros.get("isbn");
return dao.listaTodosPaginada(inicio, quantidade, "isbn", isbn, campoOrdenacao, sentidoOrdenacao);
} else if (filtros.get("preco") != null) {
String preco = (String) filtros.get("preco");
return dao.listaTodosPaginada(inicio, quantidade, "preco", preco,campoOrdenacao, sentidoOrdenacao);
} else if (filtros.get("data") != null) {
String data = (String) filtros.get("data");
return dao.listaTodosPaginada(inicio, quantidade, "data", data, campoOrdenacao, sentidoOrdenacao);
}
return dao.listaTodosPaginada(inicio, quantidade, "titulo", titulo, campoOrdenacao, sentidoOrdenacao);
}
Erro ao pesquisar por preço
/livro.xhtml
fev 25, 2019 5:52:27 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
GRAVE: Error Rendering View[/livro.xhtml]
java.lang.IllegalArgumentException: Parameter value [250%] did not match expected type [java.lang.Double]
Ao pesquisar por data não da erro nenhum mas não funciona