-
a seleção não é clara. No SQL você selecionas.*, p.name, p.code
, mas em critérios você espera umLong
?
-
seuLEFT JOIN
não deve serLEFT
.
-
nos critérios você não tem nenhuma adesão.
-
você deve usar metamodelo, como um conselho geral.
Acho que você quer todo o
Stock
s que contêm pelo menos um Product
com nome como %value%
. Se minha suposição estiver certa:
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();