一尘不染

Hibernate条件排序依据

hibernate

我有一个名为Gift的表,该表与一个名为ClickThrough的表具有一对多关系-
该表指示单击了该特定Gift的次数。我需要查询所有的Gift对象,按ClickThrough计数排序。我不需要返回ClickThrough计数,因为我不需要做任何事情,我只想将其用于订购即可。

我需要查询以直接返回Gift对象的列表,只是按ClickThrough计数排序。如何使用Criteria
API做到这一点?我可以找到很多关于此的类似信息的文档,但是没有什么比我需要的要多。


阅读 260

收藏
2020-06-20

共1个答案

一尘不染

如果要返回实体或属性的列表以及计数,则需要分组依据。在标准中,这通过ProjectionList和完成Projections。例如

    final ProjectionList props = Projections.projectionList();
    props.add(Projections.groupProperty("giftID"));
    props.add(Projections.groupProperty("giftName"));
    props.add(Projections.count("giftID"), "count"); //create an alias for the count
    crit.setProjection(props);

    crit.add(Order.desc("count")); //use the count alias to order by

但是,由于正在使用ProjectionList,因此还需要使用AliasToBeanConstructorResultTransformer

2020-06-20