[ad_1]
أريد تحديد كافة السجلات المميزة وليس سجلاً محددًا وككيانات.
أنا استخدم السبات 5.6.15, خطة العمل المشتركة 2.2 و جى دي كيه 11 ال تي اس
لقد حاولت تحديد Transid ككيان للطلبات ولكني حصلت على:
XML
Caused by: java.lang.ClassCastException: class java.lang.String cannot be cast to class com.tailorfx.pojo.Orders
ما حاولت:
جافا
public List<Orders> custOrder() { try ( Session session = HibernateUtil.getSessionFactory().openSession()) { CriteriaBuilder cb = session.getCriteriaBuilder(); CriteriaQuery<Orders> cq = cb.createQuery(Orders.class); Root<Orders> root = cq.from(Orders.class); cq.select(root.get("transid")).distinct(true); return session.createQuery(cq).getResultList(); } }
لذلك أريد تحديد جميع عمليات النقل (التحويلات) المميزة ولكن ككيانات وليس كسلسلة.
فكيف نفعل؟
الحل 1
وهنا الجواب:
public List<Orders> custOrder() { try ( Session session = HibernateUtil.getSessionFactory().openSession()) { CriteriaBuilder cb = session.getCriteriaBuilder(); CriteriaQuery<Orders> cq = cb.createQuery(Orders.class); Root<Orders> root = cq.from(Orders.class); Subquery<Long> subquery = cq.subquery(Long.class); Root<Orders> subRoot = subquery.from(Orders.class); subquery.select(cb.max(subRoot.get("id"))); subquery.groupBy(subRoot.get("transid")); cq.where(cb.in(root.get("id")).value(subquery)); return session.createQuery(cq).getResultList(); } }
[ad_2]
コメント