如何获得可重用的Hibernate标准.

Jot*_*thi 3 hibernate

如何克隆标准对象?

我创建了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()));
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到了我预期的结果.但我需要获取应用限制的记录数量而不应用order by和setmaxResults.我如何实现?我无法克隆条件对象也..

Jot*_*thi 6

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

pageCriteria.setTotalRecords(((Integer) criteria
                            .setProjection(Projections.rowCount())
                            .uniqueResult()).intValue());
//Reset
criteria.setProjection(null);
criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
Run Code Online (Sandbox Code Playgroud)

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