[
https://issues.apache.org/struts/browse/WW-3245?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrew Hodgson updated WW-3245:
-------------------------------
Attachment: struts2JasperReportsPluginHQLPatch.patch
Attached patch file with suggested implementation.
This achieves the result by examining the relevant report parameter
"HIBERNATE_SESSION" and if present calls the correct
JasperFillManager.fillReport method.
If dataSource, connection & no session supplied in the report parameters, an
error is thrown as before.
It would be possible to introduce Session as a parameter to the plugin, but
this would most likely introduce a dependancy between the plugin and Hibernate,
which might not be desirable, hence I didn't choose this route.
> Jasper plugin does not support supply of data via report parameters (for
> example Hibernate session object)
> ----------------------------------------------------------------------------------------------------------
>
> Key: WW-3245
> URL: https://issues.apache.org/struts/browse/WW-3245
> Project: Struts 2
> Issue Type: Improvement
> Components: Plugin - JasperReports
> Affects Versions: 2.1.6, 2.2.x, Future
> Environment: Present in all environments, attempting usage of
> Hibernate query HQL embedded in a JasperReport.
> Reporter: Andrew Hodgson
> Priority: Minor
> Attachments: struts2JasperReportsPluginHQLPatch.patch
>
>
> A typical usage scenario for a Jasper report involves writing code within the
> report document to retrieve report from a database recent Struts code
> supports this via supply of a SQL Connection object, but I notice it's not
> supported in 2.1.6 production release.
> JasperReports supports many implementation languages for it's data retrieval
> code, but in particular I have identified issue in relation to Hibernate HQL
> queries.
> Normal route in this scenario (if not using Struts JasperReports plugin) is
> to supply Hibernate session as a parameter to the report, then implement HQL
> within the document to retrieve the data. However the Plugin only supports
> Connection or a pre-populated dataSource as a source for the report's data.
> This means a temporary data structure (perhaps a sizable List / Map) must be
> produced in order to present data to the Plugin..
> It would be more efficient and convenient to either support supply of a
> Hibernate Session object, or allow call to the plugin when both connection
> and datasource are absent. In this scenario, the plugin would respond by
> calling
> http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JasperFillManager.html#fillReport(java.io.InputStream,%20java.util.Map)
> And rely on Jasper Fill Manager's inbuilt functionality to draw connection
> detail from the supplied parameters. This option has the advantage that it
> can support a range of query languages / connection methods that
> JasperReports may support, now or in the future.
> The code would of course have to deal with the case in which the relevant
> report parameters have be left blank, and thus respond with an appropriate
> error condition, as it does in Struts 2.1.6 when dataSource has been left
> null.
> I will attempt to produce a patch with proposed modified code in the near
> future, to assist with this improvement.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.