Java jsf hibernate标准api

Java jsf hibernate标准api,java,hibernate,jsf,criteria-api,Java,Hibernate,Jsf,Criteria Api,我在Criteria API中有查询,如下所示: CriteriaQuery<XXX> query = builder.get().createQuery(XXX.class).distinct(true); Root<XXX> root = query.from(XXX.class); Fetch<XXX, YYY> fetch = root.fetch(XXX_.yyy, JoinType.LEFT); CriteriaQuery query=build

我在Criteria API中有查询,如下所示:

CriteriaQuery<XXX> query = builder.get().createQuery(XXX.class).distinct(true);
Root<XXX> root = query.from(XXX.class);
Fetch<XXX, YYY> fetch = root.fetch(XXX_.yyy, JoinType.LEFT);
CriteriaQuery query=builder.get().createQuery(XXX.class).distinct(true);
Root=query.from(XXX.class);
Fetch=root.Fetch(XXX\ux.yyy,JoinType.LEFT);
现在,我被卡住的部分:

当我得到查询结果时,我得到了XXX记录的列表,以及附加的YYY记录列表(当它们存在时)
我想按与XXX对象匹配的YYY记录数对结果进行排序

到目前为止,我更接近偏执狂,也更接近那个目标。有人吗?

要解决您的问题,您需要得到如下所示的结果SQL查询(由hibernate条件生成):

选择xxx.*,计数(yyy.FOREIGN\u KEY\u字段)作为从xxx到xxx的计数左加入yyy-yy-on(yyy.FOREIGN\u KEY\u字段=xxx.PRIMARY\u KEY\u字段)分组按xxx.PRIMARY\u KEY\u字段按计数排序

对于这种情况,可能需要使用hibernate查询api。为实体创建条件,并仅返回实体列表和一些投影。在hql中,它看起来非常类似于:

选择xxx,count(yyy.FOREIGN\u KEY\u字段)作为从xxx算起的计数xxx左按xxx.PRIMARY\u KEY\u字段按计数加入xxx.yyy yy组

HQL对于此类查询更灵活