如何解决如何使用标准 Api 创建子查询
我尝试按照标准 Api 执行以下 JPQL 子句
[INFO] com.fasterxml.jackson.core:jackson-databind:jar:2.8.11.3:compile -- module jackson.databind (auto)
没有成功, 我该怎么做?
tnx 高级
解决方法
我知道解决我的问题按照答案:
CriteriaBuilder cb = manager.getCriteriaBuilder();
CriteriaQuery<ProductDTOOut> criteriaQuery = cb.createQuery(ProductDTOOut.class);
// create query
Root<Product> rootFrom = criteriaQuery.from(Product.class);
// creating subquery
Subquery<Double> subquery = criteriaQuery.subquery(Double.class);
Root<Price> subqueryRoot = subquery.from(Price.class);
subquery.select(subqueryRoot.get(Price_.PRICE));
subquery.where(
cb.equal(rootFrom.get(Product_.ID),subqueryRoot.get(Price_.PRODUCT).get(Product_.ID)),cb.equal(
subqueryRoot.get(Price_.COMPANY).get(Company_.ID),companyId));
criteriaQuery.select(cb.construct(ProductDTOOut.class,rootFrom.get(Product_.ID),rootFrom.get(Product_.NAME),subquery // here put subquery
));
TypedQuery<ProductDTOOut> query = manager.createQuery(criteriaQuery);
return query.getResultList();
希望能帮到有同样问题的人。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。