Comment puis-je définir une catégorie dans n'importe quelle catégorie dans JPA? Donc, si la catégorie null est passée, j'ignore simplement le paramètre category, sélectionne tous les produits.
Vous devrez créer la requête dynamiquement ici. Avec HQL (ce qui est un exemple simplifié de):
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()
Mais, en fait, ma recommandation serait d'utiliser l'API Critères ici:
Criteria criteria = session.createCriteria(Product.class);
if (category != null) {
criteria.add(Expression.eq("category", category);
}
// And so on...
List results = criteria.list();
Beaucoup plus simple pour les requêtes dynamiques complexes.
Désolé pour la mauvaise requête SQL :) Votre solution "WHERE CATEGORY IS NOT NULL" est bonne, mais je dois créer une autre requête. Existe-t-il un autre moyen de sauvegarder une requête? –