Vuelvo a "dar por saco" xD
Resulta que en un
formulario JSF tengo una tabla esperando accionar el botón "búsqueda" para que según los campos rellenados por el cliente busque en la base de datos una cosa u otra. Por ejemplo, tengo
4 campos de texto (nombre,apellidos,edad,salario) y según cuales tengan contenido
se hará la búsqueda con tales parámetros rellenados.
Al presionar el botón búsqueda se accede al método de la clase
JPAController "getAll(objeto_que_contiene_datos_rellenados)" y en éste método me he quedado atrancado, he probado algo como esto
Código:
Código Java:
Ver originalpublic List<Personas> getAll(Personasform pform)
{
EntityManager em = getEntityManager();
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Personas> criteriaQuery = cb.createQuery(Personas.class);
// Obtenemos el EntityManager, CriteriaBuilder y Creamos el Query sobre la entidad deseada (Usuario.class en nuestro caso)
// Creamos los predicados
Predicate conjunction = cb.conjunction();
Predicate disjunction = cb.disjunction();
if (pform.getNombres() != null && !"".equals(pform.getNombres()))
{
// % Agregamos los comodines SQL al inicio y fin del parametro a buscar
conjunction.
getExpressions().
add(cb.
like(Personas.
[COLOR
="red"]get
[/COLOR
]("nombre").
as(String.
class),
"%"+ pform.
getNombres() + "%")); }
if (disjunction.getExpressions().size() > 0)
{
// agregamos el disjunction al conjunction para que quede encerrado en paréntesis (como en el Query SQL
// de la Imagen de Arriba)
conjunction.getExpressions().add(disjunction);
}
if (conjunction.getExpressions().size() > 0)
{
criteriaQuery.where(conjunction);
}
// retornamos la lista filtrada
return em.createQuery(criteriaQuery).getResultList();
}
Pero da error en el get en rojo, creo que el criteriabuilder se usa para esto(consultas dinámicas) sino corregidme please
Gracias con antelación