[jbosstools-issues] [JBoss JIRA] (JBIDE-11584) JBOSS BIRT Integration compatibility issue with Hibernate 3.6+

Tomas Vala (JIRA) jira-events at lists.jboss.org
Thu Apr 19 09:00:20 EDT 2012


    [ https://issues.jboss.org/browse/JBIDE-11584?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12685676#comment-12685676 ] 

Tomas Vala commented on JBIDE-11584:
------------------------------------

Well I have done some investigation on my own and managed to find root of the problem.

Class org.jboss.tools.birt.oda.impl.Parameter makes use of deprecated and now unsupported Hibernate API. See below.

Fragment of Parameter.java
{noformat}
	static {
		hibernateTypes.put(StringType, Hibernate.STRING);
		hibernateTypes.put(IntegerType, Hibernate.INTEGER);
		hibernateTypes.put(DoubleType, Hibernate.DOUBLE);
		hibernateTypes.put(BigDecimalType, Hibernate.BIG_DECIMAL);
		hibernateTypes.put(DateType, Hibernate.DATE);
		hibernateTypes.put(TimeType, Hibernate.TIME);
		hibernateTypes.put(TimestampType, Hibernate.TIMESTAMP);
		hibernateTypes.put(BooleanType, Hibernate.BOOLEAN);
	}
{noformat}

Should be modified to ...:
{noformat}
	static {
		hibernateTypes.put(StringType, StandardBasicTypes.STRING);
		hibernateTypes.put(IntegerType, StandardBasicTypes.INTEGER);
		hibernateTypes.put(DoubleType, StandardBasicTypes.DOUBLE);
		hibernateTypes.put(BigDecimalType, StandardBasicTypes.BIG_DECIMAL);
		hibernateTypes.put(DateType, StandardBasicTypes.DATE);
		hibernateTypes.put(TimeType, StandardBasicTypes.TIME);
		hibernateTypes.put(TimestampType, StandardBasicTypes.TIMESTAMP);
		hibernateTypes.put(BooleanType, StandardBasicTypes.BOOLEAN);
	}
{noformat}

... in order to comply with Hibernate 3.6+ API. Please note that refered class StandardBasicTypes does not exist in pre-3.6, hence you may want be aware of that if intending to support both pre-3.6 and post-3.6 Hibernate APIs in your JBoss BIRT Integration module.

Any chance that a fix similar to this proposal becomes available in a stable or development repository in a timely fashion?

Cheers,
Tomas
                
> JBOSS BIRT Integration compatibility issue with Hibernate 3.6+
> --------------------------------------------------------------
>
>                 Key: JBIDE-11584
>                 URL: https://issues.jboss.org/browse/JBIDE-11584
>             Project: Tools (JBoss Tools)
>          Issue Type: Bug
>          Components: birt
>         Environment: JBoss BIRT Integration version 1.2.0.v20111025-0413-H201-Final
> JBoss BIRT Integration version 1.3.0.v20120413-0659-H849-Beta3
> JBoss Hibernate version 3.6.10.Final
> BIRT Runtime version 3.7.1
> Spring version 3.1.0.RELEASE
>            Reporter: Tomas Vala
>            Assignee: Snjezana Peco
>              Labels: birt, oda
>
> BIRT report design utilizing Hibernate DataSource/DataSet with query parameter(s) will trigger below listed error and fail.
> This is believed to be consequence of this incompatible change in Hibernate 3.6, see http://opensource.atlassian.com/projects/hibernate/browse/HHH-5138
> Outcome of several test runs:
> Hibernate 3.5.6 + BIRT Report w/o query parameter = OK
> Hibernate 3.5.6 + BIRT Report with query parameter = OK
> Hibernate 3.6.7 + BIRT Report w/o query parameter = OK
> Hibernate 3.6.7 + BIRT Report with query parameter = ERROR
> Hibernate 3.6.10 + BIRT Report w/o query parameter = OK
> Hibernate 3.6.10 + BIRT Report with query parameter = ERROR
> Tested with both stable and development versions of JBoss BIRT Integration jar (1.2.0, 1.3.0) - doesn't seem to have any impact on outcome.
> 19.4.2012 12:15:33 org.eclipse.birt.report.engine.api.impl.RunAndRenderTask doRun
> SEVERE: Error happened while running the report.
> java.lang.NoSuchFieldError: STRING
> 	at org.jboss.tools.birt.oda.impl.Parameter.<clinit>(Parameter.java:26)
> 	at org.jboss.tools.birt.oda.impl.HibernateOdaQuery.setString(HibernateOdaQuery.java:220)
> 	at org.eclipse.datatools.connectivity.oda.consumer.helper.OdaQuery.setString(OdaQuery.java:738)
> 	at org.eclipse.birt.data.engine.odaconsumer.PreparedStatement.doSetString(PreparedStatement.java:4310)
> 	at org.eclipse.birt.data.engine.odaconsumer.PreparedStatement.setString(PreparedStatement.java:3919)
> 	at org.eclipse.birt.data.engine.odaconsumer.PreparedStatement.setParameterValue(PreparedStatement.java:3134)
> 	at org.eclipse.birt.data.engine.odaconsumer.PreparedStatement.setParameterValue(PreparedStatement.java:3070)
> 	at org.eclipse.birt.data.engine.executor.DataSourceQuery.setInputParameterBinding(DataSourceQuery.java:1124)
> 	at org.eclipse.birt.data.engine.executor.DataSourceQuery.addParameterDefns(DataSourceQuery.java:572)
> 	at org.eclipse.birt.data.engine.executor.DataSourceQuery.prepare(DataSourceQuery.java:290)
> 	at org.eclipse.birt.data.engine.impl.PreparedOdaDSQuery$OdaDSQueryExecutor.prepareOdiQuery(PreparedOdaDSQuery.java:455)
> 	at org.eclipse.birt.data.engine.impl.QueryExecutor.prepareExecution(QueryExecutor.java:341)
> 	at org.eclipse.birt.data.engine.impl.PreparedQuery.doPrepare(PreparedQuery.java:455)
> 	at org.eclipse.birt.data.engine.impl.PreparedDataSourceQuery.produceQueryResults(PreparedDataSourceQuery.java:190)
> 	at org.eclipse.birt.data.engine.impl.PreparedDataSourceQuery.execute(PreparedDataSourceQuery.java:178)
> 	at org.eclipse.birt.data.engine.impl.PreparedOdaDSQuery.execute(PreparedOdaDSQuery.java:145)
> 	at org.eclipse.birt.report.data.adapter.impl.DataRequestSessionImpl.execute(DataRequestSessionImpl.java:620)
> 	at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doExecuteQuery(DteDataEngine.java:152)
> 	at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.execute(AbstractDataEngine.java:267)
> 	at org.eclipse.birt.report.engine.executor.ExecutionContext.executeQuery(ExecutionContext.java:1905)
> 	at org.eclipse.birt.report.engine.executor.QueryItemExecutor.executeQuery(QueryItemExecutor.java:80)
> 	at org.eclipse.birt.report.engine.executor.DataItemExecutor.execute(DataItemExecutor.java:75)
> 	at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplicateItemExecutor.execute(SuppressDuplicateItemExecutor.java:43)
> 	at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.execute(WrappedReportItemExecutor.java:46)
> 	at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportItemExecutor.execute(LocalizedReportItemExecutor.java:34)
> 	at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:65)
> 	at org.eclipse.birt.report.engine.layout.html.HTMLStackingLM.layoutChildren(HTMLStackingLM.java:26)
> 	at org.eclipse.birt.report.engine.layout.html.HTMLAbstractLM.layout(HTMLAbstractLM.java:140)
> 	at org.eclipse.birt.report.engine.layout.html.HTMLInlineStackingLM.resumeLayout(HTMLInlineStackingLM.java:111)
> 	at org.eclipse.birt.report.engine.layout.html.HTMLInlineStackingLM.layoutNodes(HTMLInlineStackingLM.java:160)
> 	at org.eclipse.birt.report.engine.layout.html.HTMLStackingLM.layoutChildren(HTMLStackingLM.java:26)
> 	at org.eclipse.birt.report.engine.layout.html.HTMLAbstractLM.layout(HTMLAbstractLM.java:140)
> 	at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:70)
> 	at org.eclipse.birt.report.engine.layout.html.HTMLStackingLM.layoutChildren(HTMLStackingLM.java:26)
> 	at org.eclipse.birt.report.engine.layout.html.HTMLTableLM.layoutChildren(HTMLTableLM.java:132)
> 	at org.eclipse.birt.report.engine.layout.html.HTMLAbstractLM.layout(HTMLAbstractLM.java:140)
> 	at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:70)
> 	at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:92)
> 	at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:100)
> 	at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:180)
> 	at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:77)
> An example of simple JPQL query featuring problematic parameter:
> SELECT
> 	id,
> 	attribute1,
> 	attribute2
> FROM
> 	MyEntity my
> WHERE
> 	id = ?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jbosstools-issues mailing list