-
wybór jest niejasny. W SQL wybierasz
s.*, p.name, p.code
, ale w kryteriach oczekujeszLong
? -
Twój
LEFT JOIN
nie musi byćLEFT
. -
w kryteriach, do których w ogóle nie pasujesz.
-
powinieneś używać metamodelu jako ogólnej porady.
Myślę, że chcesz wszystkie Stock
które zawierają co najmniej jeden Product
o nazwie jak %value%
.
Jeśli moje założenie jest słuszne:
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();