-
la selección no está clara. En SQL selecciona
s.*, p.name, p.code
, pero en los criterios espera unLong
? -
tu
LEFT JOIN
no tiene que serLEFT
. -
en los criterios, no tienes ningún tipo de unión.
-
deberías usar metamodelo, como consejo general.
Creo que quieres todas las Stock
s que contienen al menos un Product
con nombre como %value%
.
Si mi suposición es correcta:
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();