|
Here below is a short example of an extract for Excel report i can do with Hibernate Criteria API. It runs fast even for large volume. I would like to have same functionalities on AuditReader/AuditQuery. > create projections on alias tables (not only the current entity) > use Transformers.aliasToBean() to map directly to DTO bean
Actually i am using getters to load lazy dependencies and it takes a while, For large volume it reaches server session timeout.
--------------------------------------------------------------------------- CODE :
Session session = ((org.hibernate.ejb.EntityManagerImpl) entityManager.getDelegate()).getSession();
Criteria criteria = session.createCriteria(Bill.class);
//where criteria.add(Restrictions.in("id",idList));
// order criteria.addOrder(Order.desc("creationDate"));
//alias criteria.createAlias("chrono", "chrono", CriteriaSpecification.LEFT_JOIN); criteria.createAlias("company", "company", CriteriaSpecification.LEFT_JOIN);
//projection here criteria.setProjection(Projections.projectionList() .add(Projections.property("id"),"id") .add(Projections.property("chrono.value"),"chronoValue") .add(Projections.property("creationDate"),"creationDate") .add(Projections.property("company.name"),"companyName") .add(Projections.property("company.companyNumber"),"companyNumber") .add(Projections.property("amountExcludingTaxes"),"amountExcludingTaxes") .add(Projections.property("discountAmount"),"discountAmount") );
//to DTO criteria.setResultTransformer(Transformers.aliasToBean(BillFullExcelDto.class));
List<BillFullExcelDto> billFullExcelDtos = criteria.list();
-------------------------------------------------------
Thank you.
|