Bonjour,
je développe une application en java utilisant l'API JasperReports 4.1.1 pour faire du reporting. Afin d'avoir une portabilité j'ai choisi d'utiliser l'API Hibernate 3.5.6 pour gérer la connexion et les requêtes avec JasperReports.
Jusque là j'ai réussi à faire fonctionner les deux ensemble et à générer des rapports. Mais je voudrais afficher dans un prévisualisateur juste la première page de mon rapport avec uniquement les données que l'on peut afficher à l'intérieur afin de gagner du temps sur l'exécution de la requête. Après avoir fait des recherches j'ai trouver une solution, qui consiste juste à ajouter une propriété dans l'alimentation du rapport pour faire cela. Voici mon code d'alimentation du rapport :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| /**
* This method is used to fill a report and to show if an error occurred during the filling
*/
public void fillReport()
{
logger.trace("filling of report");
reportPrinted = null;
JasperReport reportCompiled = getReportCompiled();
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction transaction = session.beginTransaction();
Map<String, Object> reportParameters = getFillingReportParameters(session);
try
{
reportPrinted = JasperFillManager.fillReport(reportCompiled, reportParameters);
logger.trace("filling report done and it contains {} pages", getNumberOfPages());
} catch (JRException e)
{
logger.error("An error is occured while filling of report : {}", LoggerManager.getErrorMessage(e));
}
transaction.rollback();
}
/**
* @param session
* the hibernate session
* @return the map of filling report parameters
*/
private Map<String, Object> getFillingReportParameters(Session session)
{
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put(JRHibernateQueryExecuterFactory.PARAMETER_HIBERNATE_SESSION, session);
parameters.put(JRHibernateQueryExecuterFactory.PROPERTY_HIBERNATE_QUERY_RUN_TYPE,
JRHibernateQueryExecuterFactory.VALUE_HIBERNATE_QUERY_RUN_TYPE_LIST);
parameters.put(JRHibernateQueryExecuterFactory.PROPERTY_HIBERNATE_QUERY_LIST_PAGE_SIZE, 1);
return parameters;
} |
Comme vous pouvez le constatez la propriété qui est censé répondre à mon besoin est la suivante :
Code :
parameters.put(JRHibernateQueryExecuterFactory.PROPERTY_HIBERNATE_QUERY_LIST_PAGE_SIZE, 1);
Cependant elle n'a aucun effet sur l'alimentation et j'ai toujours la totalité des pages générées. Est-ce un bug dans l'API JasperReports ? Sinon, toutes propositions de solutions sont la bienvenue.
Merci