java – JPA 2 Criteria API – 定义子查询

前端之家收集整理的这篇文章主要介绍了java – JPA 2 Criteria API – 定义子查询前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

到目前为止,我尝试将SQL查询转换为Criteria API但没有成功.我可以创建两个单独的查询,返回我需要的值,但我不知道如何在单个查询中组合它们.

这是有效的sql语句:

select company.*,ticketcount.counter from company
    join 
(select company,COUNT(*) as counter from ticket where state<16 group by company) ticketcount
on company.compid = ticketcount.company;

此Criteria查询返回内部查询结果:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery

在应用程序中我定义了一个小包装器/辅助类:

public  class intCompany{
    public Company comp;
    public Long opentickets;
    public intCompany(Long opentickets,Company comp){
        this.comp = comp;
        this.opentickets = opentickets;
    }
    public intCompany(){

    }
}

那么有谁知道如何使这个工作?

更新

谢谢.我按照你的建议改变了我的标准查询.我只需要在最后添加一个循环来获取我想要的信息.

List

也许只是不可能将原始的sql转换为Criteria API.

另一个更新

我想我必须将原来的sql表达式更改为

select company.*,ticketcount.counter from company
    left join 
(select company,COUNT(*) as counter from ticket where state<16 group by company) ticketcount
on company.compid = ticketcount.company;

否则我不会让票证表中没有条目的公司.

还有其他建议吗?

最佳答案
你几乎完成了一切.

//---//
CriteriaBuilder cb = em.getCriteriaBuilder();
//Your Wrapper class constructor must match with multiselect arguments
CriteriaQuery

这应该按预期工作.

原文链接:https://www.f2er.com/java/437990.html

猜你在找的Java相关文章