Mysql
 sql >> Base de données >  >> RDS >> Mysql

JPA CriteriaBuilder comment créer une requête join + like

  1. la sélection n'est pas claire. En SQL, vous sélectionnez s.*, p.name, p.code , mais dans les critères, vous attendez un Long ?

  2. votre LEFT JOIN ne doit pas être LEFT .

  3. dans les critères, vous n'avez aucune jointure.

  4. 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();