我有这张桌子飞机:
+ --------- + ------------- + ------ + ----- + --------- + ------- +
|领域类型空|关键默认值|额外|
+ --------- + ------------- + ------ + ----- + --------- + ------- +
| id | int(11)|否| | NULL | |
|类型int(11)|是的| NULL | |
| companyNam | varchar(50)|是的| NULL | |
| pilotName | varchar(50)|是的| NULL | |
| lastFlight |日期|是的| NULL | |
|价格| int(11)|是的| NULL | |
+ --------- + ------------- + ------ + ----- + --------- + ------- +
我想用领航员名称,lastFlight和公司名称的组合来进行计数。
基本上此查询
select count(distinct CONCAT(companyNam,pilotName ,lastFlight)) from Planes
我尝试使用Criteria Quert来实现,但是将日期字段连接并转换为String会遇到一些问题
CriteriaBuilder cb = ..;
CriteriaQuery<Long> criteriaQuery= cb.createQuery(Long.class);
Root<Planes> from= criteriaQuery.from(Planes.class);
criteriaQuery.select(cb.countDistinct( /*from.get(Planes_.companyNam), from.get(Planes.pilotName) , from.get(Planes_.lastFlight)*/ ));
TypedQuery<Long> query = getEntityManager().createQuery(criteriaQuery);
Long result = query.getSingleResult();