मैं जेपीए में किसी भी श्रेणी में श्रेणी कैसे सेट कर सकता हूं? तो अगर शून्य श्रेणी पारित हो जाती है, तो मैं श्रेणी पैरामीटर को अनदेखा करता हूं, सभी उत्पादों का चयन करता हूं।
आपको यहां गतिशील रूप से क्वेरी बनाना होगा। HQL (यह एक सरल उदाहरण है) के साथ:
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()
लेकिन, वास्तव में, मेरी सिफारिश यहाँ मानदंड एपीआई का उपयोग करने होगा:
Criteria criteria = session.createCriteria(Product.class);
if (category != null) {
criteria.add(Expression.eq("category", category);
}
// And so on...
List results = criteria.list();
बहुत जटिल गतिशील प्रश्नों के लिए सरल।
स्रोत
2010-03-13 20:43:37
गलत SQL क्वेरी के लिए खेद है :) आपका समाधान "जहां श्रेणी पूर्ण नहीं है" अच्छा है, लेकिन मुझे एक और क्वेरी बनाना है। क्या कोई अन्य तरीका एक प्रश्न सहेज सकता है? –