-
चयन अस्पष्ट है। SQL में आप
s.*, p.name, p.code
. चुनें , लेकिन मानदंड में आपLong
. की अपेक्षा करते हैं ? -
आपका
LEFT JOIN
LEFT
नहीं होना चाहिए । -
मानदंड में आप बिल्कुल भी शामिल नहीं हुए हैं।
-
आपको सामान्य सलाह के रूप में मेटामॉडल का उपयोग करना चाहिए।
मुझे लगता है कि आप सभी Stock
चाहते हैं s जिसमें कम से कम एक Product
हो %value%
. जैसे नाम के साथ ।
अगर मेरी धारणा सही है:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Stock> cq = cb.createQuery(Stock.class);
Root<Stock> stock = cq.from(Stock.class);
Join<Stock, Product> product = stock.join(Stock_.products);
cq.select(stock);
cq.distinct(true);
cq.where(cb.like(product.get(Product_.name), "%" + value + "%");
return em.createQuery(cq).getResultList();