微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用标准 Api 创建子查询

如何解决如何使用标准 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 举报,一经查实,本站将立刻删除。