-
la sélection n'est pas claire. En SQL, vous sélectionnez
s.*, p.name, p.code
, mais dans les critères, vous attendez unLong
? -
votre
LEFT JOIN
ne doit pas êtreLEFT
. -
dans les critères, vous n'avez aucune jointure.
-
vous devriez utiliser le métamodèle, comme conseil général.
Je pense que vous voulez tous les Stock
s qui contiennent au moins un Product
avec un nom comme %value%
.
Si mon hypothèse est juste :
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();