sql >> Base de Datos >  >> RDS >> Mysql

JPA CriteriaBuilder cómo crear una consulta de unión + me gusta

  1. la selección no está clara. En SQL selecciona s.*, p.name, p.code , pero en los criterios espera un Long ?

  2. tu LEFT JOIN no tiene que ser LEFT .

  3. en los criterios, no tienes ningún tipo de unión.

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