Consulta personalizada de Hibernate para la pantalla de búsqueda
Frecuentes
Visto 665 equipos
1
Tengo una pantalla de búsqueda que tiene 10 campos e involucra alrededor de 5 a 6 tablas para obtener el resultado. Estoy escribiendo una consulta SQL personalizada y agregando la condición solo cuando existe un valor.
¿Puede alguien sugerir si este es el enfoque correcto o cualquier otra manera mejor?
No puedo usar complementos ni API adicionales para mi situación.
StringBuffer sqlQuery = new StringBuffer();
sqlQuery.append (" select member.* from member, customer, case where customer.status='A');
if(firstName != null)
sqlQuery.append("customer.firstName= :firstName");
if(caseid != null)
sqlQuery.append("case.caseid =:caseid");
SQLQuery queryObj = createSQLquery(sqlQuery.toString());
queryObj.list();
mientras que miembro, cliente, caso son tablas reales.
ACTUALIZAR
cuando estoy agregando la condición where al búfer de cadena
if(caseid != null)
sqlQuery.append(" and case.caseid =:caseid");
and when queryObj is formed I am doing it as
if(caseid != null)
queryObj.setString("caseid", caseid);
is there better way to add after queryObj (to combine both)?
Gracias de antemano.
1 Respuestas
2
No, no es necesariamente el enfoque correcto. SQL no es el lenguaje de consulta elegido cuando se usa Hibernate. Se debe preferir HQL cuando sea posible. E Hibernate también tiene la API de criterios que ha sido diseñado precisamente para construir consultas dinámicas.
Respondido el 12 de junio de 12 a las 17:06
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java hibernate or haz tu propia pregunta.
usando Criterios como dije, tengo más de 5 tablas que no sé cómo referirme entre sí. Y si me refiero, algunos de ellos son uno a muchos, muchos a uno, muchos a muchos. Estoy usando HQL, edité la pregunta nuevamente, verifique y hágamelo saber. Gracias - changeme
docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/…. No puedo hacer más que enlazar a la documentación. Intenta leerlo, comprenderlo y experimentar. No podrá ser un asistente de criterios en 3 minutos. Si está atascado, publique una pregunta que explique con precisión lo que está tratando de hacer y únase al código relevante y al mapeo de las entidades involucradas. - JB Nizet
¿Puedes ver la actualización una vez y ayudarme un poco más? - changeme