如何获得可重用的Hibernate标准。?

如何获得可重用的Hibernate标准。?,hibernate,Hibernate,如何克隆标准对象 我已经创建了用于连接多个表和应用多个限制的Criteria对象。然后,我需要基于应用的限制的记录总数。然后,我需要应用分页详细信息(通过设置maxList),并且必须检索对象列表 Criteria criteria = session.createCriteria(Property.class, "property") .createAlias("property.propertyType", "type").createAlia

如何克隆标准对象

我已经创建了用于连接多个表和应用多个限制的Criteria对象。然后,我需要基于应用的限制的记录总数。然后,我需要应用分页详细信息(通过设置maxList),并且必须检索对象列表

    Criteria criteria = session.createCriteria(Property.class, "property")
                    .createAlias("property.propertyType", "type").createAlias(
                            "property.propertyConcern", "propertyConcern",
                            CriteriaSpecification.LEFT_JOIN).createAlias(
                            "propertyConcern.concern", "concern",
                            CriteriaSpecification.LEFT_JOIN).setResultTransformer(
                            CriteriaSpecification.DISTINCT_ROOT_ENTITY);


criteria = addMultipleSeachCriteria(criteria, condition);
    criteria.setFirstResult(
                        pageCriteria.getFirstRecordOfCurrentPage())
                        .setMaxResults(pageCriteria.getRecordsPerPage());

criteria.addOrder(pageCriteria.isSortDescending() ? Order
                            .desc(pageCriteria.getSortBy()) : Order
                            .asc(pageCriteria.getSortBy()));

当我运行这个程序时,我得到了预期的结果。但我需要在不应用order by和setmaxResults的情况下获取所应用限制的记录数。我如何实现?我也无法克隆criteria对象。

以下是我在NHibernate中的实现方法

DetachedCriteria newCriteria = CriteriaTransformer.TransformToRowCount(criteria);
此外,如果您想添加一些其他信息,如SUM,您可以添加具有如下预测的信息:

newCriteria.SetProjection(Projections.ProjectionList()
                                         .Add(Projections.RowCount(), "rows")
                                         .Add(Projections.Sum("TaxAmount.Decimal"))
                                         .Add(Projections.Sum("NetAmount.Decimal"))
                                         .Add(Projections.Sum("GrossAmount.Decimal")));

这是通过重置投影结果实现的

pageCriteria.setTotalRecords(((Integer) criteria
                            .setProjection(Projections.rowCount())
                            .uniqueResult()).intValue());
//Reset
criteria.setProjection(null);
criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

但我不确定它是否会在任何其他情况下失败。

您好,谢谢您的回复。它是哪个版本的Hibernate?我无法在代码中获取CriteriaTransformer类。它显示错误。请帮助。我需要hibernate中的解决方案。似乎,你为nHibernateSorry发布了帖子,因为我希望Hibernate也会有同样的端口,但似乎没有。