क्या आप कृपया निम्नलिखित कोडों को मानदंड निर्माता के "इन" ऑपरेटर का उपयोग करने के लिए कैसे मदद कर सकते हैं? मुझे "इन" का उपयोग करके उपयोगकर्ता नामों की सूची/सरणी का उपयोग करके फ़िल्टर करने की आवश्यकता है।जेपीए मानदंडबिल्डर - "IN" तुलना ऑपरेटर का उपयोग कैसे करें
मैंने जेपीए मानदंडबिल्डर - "इन" विधि का उपयोग करने की खोज करने की भी कोशिश की लेकिन अच्छे नतीजे नहीं मिल पाए। तो यदि आप मुझे इस विषय के लिए संदर्भ यूआरएल दे सकते हैं तो भी मैं वास्तव में सराहना करता हूं। धन्यवाद।
यहाँ मेरी कोड है:
//usersList is a list of User that I need to put inside IN operator
CriteriaBuilder builder = getJpaTemplate().getEntityManagerFactory().getCriteriaBuilder();
CriteriaQuery<ScheduleRequest> criteria = builder.createQuery(ScheduleRequest.class);
Root<ScheduleRequest> scheduleRequest = criteria.from(ScheduleRequest.class);
criteria = criteria.select(scheduleRequest);
List<Predicate> params = new ArrayList<Predicate>();
List<ParameterExpression<String>> usersIdsParamList = new ArrayList<ParameterExpression<String>>();
for (int i = 0; i < usersList.size(); i++) {
ParameterExpression<String> usersIdsParam = builder.parameter(String.class);
params.add(builder.equal(scheduleRequest.get("createdBy"), usersIdsParam));
usersIdsParamList.add(usersIdsParam);
}
criteria = criteria.where(params.toArray(new Predicate[0]));
TypedQuery<ScheduleRequest> query = getJpaTemplate().getEntityManagerFactory().createEntityManager().createQuery(criteria);
for (int i = 0; i < usersList.size(); i++) {
query.setParameter(usersIdsParamList.get(i), usersList.get(i).getUsername());
}
List<ScheduleRequest> scheduleRequestList = query.getResultList();
आंतरिक क्वेरी स्ट्रिंग नीचे में बदल जाती है, इसलिए है क्योंकि यह उपयोग कर रहा है "और" मैं दो उपयोगकर्ताओं द्वारा बनाए गए रिकॉर्ड नहीं मिलता है।
select generatedAlias0 from ScheduleRequest as generatedAlias0 where (generatedAlias0.createdBy=:param0) and (generatedAlias0.createdBy=:param1) order by generatedAlias0.trackingId asc
हाय पेरिफ, आपके उत्तर के लिए धन्यवाद। क्या मैं कृपया पूछ सकता हूं, "ScheduleRequest_" क्या है? मैं इसे कैसे बना सकता हूं? – Jemru
यह आपके जेपीए प्रदाता द्वारा स्वत: जेनरेट की गई मेटामोडेल क्लास है। यदि आप हाइबरनेट का उपयोग कर रहे हैं, तो इस लिंक को देखें http://docs.jboss.org/hibernate/jpamodelgen/1.0/reference/en-US/html_single/ – perissf
मेरे छद्म कोड को पढ़ना मुझे एक संभावित प्रकार की विसंगति दिखाई देती है। क्या आप उपयोगकर्ता नाम (स्ट्रिंग) या उपयोगकर्ता आईडी (इंटीजर/लांग) के साथ जुड़ रहे हैं? कृपया मुझे बताएं ताकि मैं अपना उत्तर – perissf