![](/img/trans.png)
[英]JPA / Hibernate: CriteriaBuilder - How to create query using relationship object?
[英]JPA CriteriaBuilder how to create join + like query
我有一个SQL查询:
SELECT s.*, p.name, p.code
FROM `stock` s
LEFT JOIN product p ON s.product_id = p.id
WHERE p.name LIKE "%q%"
我需要使用criteriabuilder
创建查询
我这样开始:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<Stock> stock = cq.from(Stock.class);
Path<String> path = stock.get(filter.getKey());//i have error here
String likeValue = wildCard + value + wildCard;
Predicate filterCondition = cb.conjunction();
filterCondition = cb.and(filterCondition, cb.like(path, likeValue));
请帮帮忙,怎么做得更好?
选择不清楚。 在SQL中你选择s.*, p.name, p.code
,但在你期望Long
标准中?
你的LEFT JOIN
不是LEFT
。
在标准中你根本没有加入。
你应该使用metamodel作为一般建议。
我想你想要所有包含至少一个名称为%value%
Product
Stock
。
如果我的假设是正确的:
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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.