-
la selezione non è chiara. In SQL si seleziona
s.*, p.name, p.code
, ma nei criteri ti aspetti unLong
? -
il tuo
LEFT JOIN
non deve essereLEFT
. -
nei criteri non sei affatto iscritto.
-
dovresti usare metamodel, come consiglio generale.
Penso che tu voglia tutti gli Stock
s che contengono almeno un Product
con nome come %value%
.
Se la mia ipotesi è giusta:
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();