2013-07-07 2 views
5

मैं एक एचक्यूएल कथन में नामित पैरामीटर्स को बाध्य कर रहा हूं, लेकिन यह सिर्फ भर नहीं जाता है।हाइबरनेट कॉलम नाम पैरामीटर बाइंडिंग

//colname = "AdminsInfo.name"; assume it is from method's input 
//colval = input.getName().toString(); // assume it is from method's input 

String query = "from AdminsInfo where :coln = :colv"; 
Query q = session.createQuery(query); 
q.setParameter("coln",colname); 
q.setParameter("colv",colval); 

System.out.println(q.toString());   

यह कुछ इस तरह आउटपुट जो मानकों का मतलब है (Coln, colv) सेट नहीं हैं और 0 रिकॉर्ड देता है।

QueryImpl(from AdminsInfo where :coln = :colv) 
Hibernate: select adminsinfo0_.Row as Row1_0_, adminsinfo0_.ID as ID2_0_,adminsinfo0_.Name as Name3_0_, ... where ?=? 

एचक्यूएल कथन में कॉलम नामों को बाध्य करने के तरीके पर कोई मदद की सराहना की जाती है। धन्यवाद। महदी।

उत्तर

6

आप पैरामीटर के रूप में कॉलम नाम को बाध्य नहीं कर सकते हैं। केवल एक कॉलम मान। पैरामीटर मानों को बाध्य करने और क्वेरी निष्पादित करने से पहले निष्पादन योजना की गणना की जाने पर यह नाम ज्ञात होना चाहिए। यदि आप वास्तव में ऐसी गतिशील क्वेरी चाहते हैं, तो मानदंड API का उपयोग करें, या गतिशील रूप से क्वेरी बनाने के किसी अन्य तरीके का उपयोग करें।

1

मानदंड के लिए क्वेरी को प्रतिस्थापित करने का प्रयास करें।

Criteria c = session.createCriteria(AdminsInfo.class); 
c.add(Restrictions.eq(colname,colval)); 
c.list(); 
संबंधित मुद्दे