¿Cómo puedo establecer la categoría para cualquier categoría en JPA? Entonces, si la categoría nula pasó, simplemente ignoro el parámetro categoría, selecciono todos los productos.
Tendrá que crear la consulta dinámicamente aquí. Con HQL (este es un ejemplo simplificado):
Map<String, Object> params = new HashMap<String, Object>();
StringBuffer hql = new StringBuffer("from Product p");
boolean first = true;
if (category != null) {
hql.append(first ? " where " : " and ");
hql.append("p.category = :category");
params.put("category", category);
}
// And so on...
Query query = session.createQuery(hql.toString());
Iterator<String> iter = params.keySet().iterator();
while (iter.hasNext()) {
String name = iter.next();
Object value = params.get(name);
query.setParameter(name, value);
}
List results = query.list()
Pero, en realidad, mi recomendación sería utilizar la API de criterios aquí:
Criteria criteria = session.createCriteria(Product.class);
if (category != null) {
criteria.add(Expression.eq("category", category);
}
// And so on...
List results = criteria.list();
mucho más simple para consultas dinámicas complicadas.
perdón por la consulta SQL incorrecta :) Su solución "DONDE LA CATEGORÍA NO ES NULA" es buena, pero tengo que crear otra consulta. ¿Hay alguna otra forma de guardar una consulta? –