Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

JPA CriteriaBuilder como criar join + like query


  1. a seleção não é clara. No SQL você seleciona s.*, p.name, p.code , mas em critérios você espera um Long ?

  2. seu LEFT JOIN não deve ser LEFT .

  3. nos critérios você não tem nenhuma adesão.

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