-
изборът е неясен. В SQL избирате
s.*, p.name, p.code
, но в критериите очакватеLong
? -
вашият
LEFT JOIN
не трябва да еLEFT
. -
в критериите изобщо не сте се присъединили.
-
трябва да използвате метамодел като общ съвет.
Мисля, че искате всички Stock
които съдържат поне един 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();