sql >> Database >  >> RDS >> Mysql

JPA CriteriaBuilder hoe een join + like-query te maken

  1. de selectie is onduidelijk. In SQL selecteer je s.*, p.name, p.code , maar in criteria verwacht je een Long ?

  2. je LEFT JOIN hoeft niet LEFT te zijn .

  3. in criteria heb je helemaal geen lidmaatschap.

  4. je moet metamodel gebruiken als algemeen advies.

Ik denk dat je alle Stock wilt hebben s die ten minste één Product . bevatten met naam als %value% .

Als mijn veronderstelling juist is:

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



  1. Casusuitdrukking versus casusverklaring

  2. Postgresql opgeslagen procedure retourneert tabel alle kolommen

  3. maak alle auto-increment integers hetzelfde aantal cijfers met voorloopnullen

  4. waarom sql met 'exists' langzamer werkt dan 'in' met MySQL