-
výběr je nejasný. V SQL vyberete
s.*, p.name, p.code, ale v kritériích očekáváteLong? -
vaše
LEFT JOINnesmí býtLEFT. -
v kritériích nemáte vůbec žádné připojení.
-
měli byste použít metamodel jako obecnou radu.
Myslím, že chcete všechny Stock s, které obsahují alespoň jeden Product s názvem jako %value% .
Pokud je můj předpoklad správný:
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();