Mysql
 sql >> Datenbank >  >> RDS >> Mysql

JPA CriteriaBuilder zum Erstellen von Join + Like-Abfragen

  1. Die Auswahl ist unklar. In SQL wählen Sie s.*, p.name, p.code , aber in Kriterien erwarten Sie einen Long ?

  2. Ihr LEFT JOIN muss nicht LEFT sein .

  3. an Kriterien hast du überhaupt nicht teil.

  4. Sie sollten Metamodell als allgemeine Empfehlung verwenden.

Ich glaube, Sie möchten alle Stock s, die mindestens ein Product enthalten mit Namen wie %value% .

Wenn meine Vermutung richtig ist:

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