到目前为止,我尝试将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;
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;
否则我不会让票证表中没有条目的公司.
还有其他建议吗?
最佳答案
你几乎完成了一切.
原文链接:https://www.f2er.com/java/437990.html//---//
CriteriaBuilder cb = em.getCriteriaBuilder();
//Your Wrapper class constructor must match with multiselect arguments
CriteriaQuery
这应该按预期工作.