-
pemilihannya tidak jelas. Dalam SQL Anda memilih
s.*, p.name, p.code
, tetapi dalam kriteria Anda mengharapkanLong
? -
LEFT JOIN
tidak bolehLEFT
. -
dalam kriteria Anda belum bergabung sama sekali.
-
Anda harus menggunakan metamodel, sebagai saran umum.
Saya rasa Anda ingin semua Stock
s yang berisi setidaknya satu Product
dengan nama seperti %value%
.
Jika asumsi saya benar:
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();