Foros del Web » Programación para mayores de 30 ;) » Java »

Método con resultados según parámetros cliente

Estas en el tema de Método con resultados según parámetros cliente en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 22/10/2013, 01:24
 
Fecha de Ingreso: mayo-2013
Mensajes: 68
Antigüedad: 11 años, 5 meses
Puntos: 0
Método con resultados según parámetros cliente

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 original
  1. public List<Personas> getAll(Personasform pform)
  2. {
  3.     EntityManager em = getEntityManager();
  4.     CriteriaBuilder cb = em.getCriteriaBuilder();
  5.     CriteriaQuery<Personas> criteriaQuery = cb.createQuery(Personas.class);
  6. // Obtenemos el EntityManager, CriteriaBuilder y Creamos el Query sobre la entidad deseada (Usuario.class en nuestro caso)
  7. // Creamos los predicados
  8.     Predicate conjunction = cb.conjunction();
  9.     Predicate disjunction = cb.disjunction();
  10.  
  11.     if (pform.getNombres() != null && !"".equals(pform.getNombres()))
  12.     {
  13. // % Agregamos los comodines SQL al inicio y fin del parametro a buscar
  14.           conjunction.getExpressions().add(cb.like(Personas.[COLOR="red"]get[/COLOR]("nombre").as(String.class), "%"+ pform.getNombres() + "%"));
  15.     }
  16.  
  17.     if (disjunction.getExpressions().size() > 0)
  18.     {
  19. // agregamos el disjunction al conjunction para que quede encerrado en paréntesis (como en el Query SQL
  20. // de la Imagen de Arriba)
  21.         conjunction.getExpressions().add(disjunction);
  22.     }
  23.  
  24.     if (conjunction.getExpressions().size() > 0)
  25.     {
  26.         criteriaQuery.where(conjunction);
  27.     }
  28. // retornamos la lista filtrada
  29.     return em.createQuery(criteriaQuery).getResultList();
  30. }
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
  #2 (permalink)  
Antiguo 23/10/2013, 11:58
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Método con resultados según parámetros cliente

¿Y cuál es el error?
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 24/10/2013, 01:57
 
Fecha de Ingreso: mayo-2013
Mensajes: 68
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Método con resultados según parámetros cliente

Cita:
Iniciado por Xerelo Ver Mensaje
¿Y cuál es el error?
Que el método get no existe, al igual que si escribo cualquiera de los métodos que tengo en "Personas".
Estoy bastante perdido con criteriabuilder jpa2
He buscado tutoriales y demás sin éxito
  #4 (permalink)  
Antiguo 24/10/2013, 05:02
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Método con resultados según parámetros cliente

No tengo ni idea de JPA, pero lo que parece que estás haciendo es buscar un método get estático en Personas, y no existe.

Una de dos, o se te olvidó crear ese método, o estás haciendo mal la llamada, donde llamas a Personas debería ser un objeto. Me inclino por la segunda, repasa los tutoriales para ver qué te falta.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: clase, cliente, resultados, según
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:37.