-
urvalet är oklart. I SQL väljer du
s.*, p.name, p.code
, men i kriterier förväntar du dig enLong
? -
din
LEFT JOIN
måste inte varaLEFT
. -
i kriterier har du ingen medlem alls.
-
du bör använda metamodellen som ett allmänt råd.
Jag tror att du vill ha allt Stock
s som innehåller minst en Product
med namn som %value%
.
Om mitt antagande stämmer:
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();