您可以通过请求一个不同的ID列表而不是一个不同的水合对象列表来获得所需的结果。
只需将其添加到您的条件中:
criteria.setProjection(Projections.distinct(Projections.property("id")));现在,根据基于行的限制,您将获得正确的结果数。之所以可行,是因为投影将 作为 sql查询的 一部分
执行差异检查,而不是ResultTransformer所做的是 在 执行sql查询 之后 过滤结果的差异性。
值得注意的是,您现在将获得一个ID列表,而不是获取对象列表,您可以使用它们在以后hibernate时混合对象。



