मैं निम्नलिखित HQL बदलने के लिए जेपीए मानदंड का उपयोग करने के कोशिश कर रहा हूँ:मानदंडबिल्डर.और और मानदंडबिल्डर.ओर, कैसे करें?
select distinct d from Department d
left join fetch d.children c
where d.parent is null
and (
d.name like :term
or c.name like :term
)
order by d.name
Department
बच्चों की एक Set<Department>
है।
मानदंड:
and (x = y OR z = y)
सही ढंग से:
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
CriteriaQuery<Department> c = cb.createQuery(Department.class);
Root<Department> root = c.from(Department.class);
root.fetch("children", JoinType.LEFT);
Path<Department> children = root.join("children", JoinType.LEFT);
c.orderBy(cb.asc(root.get("name")));
c.distinct(true);
c.where(cb.isNull(root.get("parent")));
String param = "%" + "term" + "%";
cb.and(cb.like(root.<String> get("name"), param));
cb.or(cb.like(children.<String> get("name"), param));
TypedQuery<Department> tq = getEntityManager().createQuery(c);
departments = tq.getResultList();
मैं यह थोड़ा संक्षिप्त है, तथापि, HQL रिटर्न 24 और मानदंड संस्करण 28. मुझे लगता है कि मैं से निपटने नहीं कर रहा हूँ हो सकता है। किसी भी पॉइंटर्स की सराहना की जाएगी। धन्यवाद।
धन्यवाद एक लाख। – kmansoor
इसके लिए धन्यवाद क्योंकि मैं भी इसे ढूंढ रहा था। – user75ponic