我在我的ejb java应用程序中遇到问题..并试图解决它我偶然发现了这个问题。 在我的ejb课程中,我有一个finder方法
/* @ejb.finder signature="java.util.Collection findByAllMultiPlan(<list
of arguments>)"
*
* query="SELECT OBJECT(e)
* FROM ElementTbl as e
* WHERE <LOTS OF STUFF>"
该方法有时失败,而不是一直失败。 (大多数时候在大数据输入上循环运行)它可能在第8次,第10次或第35次迭代时失败等。 它失败了&#34; Finder&#34;例外
javax.ejb.EJBException:嵌套异常是:javax.ejb.FinderException: 准备或执行查询时findByCriteria中的异常: 声明:&#39; weblogic.jdbc.wrapper.PreparedStatement_com_inet_tds_r@bd44a1' java.sql.SQLException:事务不再处于活动状态 - 状态:
&#39;回滚。 [原因= weblogic.transaction.internal.TimedOutException: 交易在33秒后超时BEA1-655E9CABEFC3D5D9F078]&#39 ;.此内不允许进一步的JDBC访问 transaction.java.sql.SQLException:事务不再处于活动状态 -
状态:&#39;回滚。 [Reason = weblogic.transaction.internal.TimedOutException:事务定时 在33秒后出局BEA1-655E9CABEFC3D5D9F078]&#39;。没有进一步的JDBC访问 在此交易中允许。
在日志文件中,我看到以weblogic jpql格式执行的查询
SELECT WL0.mreUidID, WL0.mreDtmCreated, WL0.mreCdeCustType, WL0.mreIn...
.. many,many fields ...
FROM tblElement WL0 WHERE ( ( ( ( ( ( ( ( ( WL0.elVchID= ? ) AND (
((((((((WL0.elVchAnotherId = ? ) .. and a lot of fields encoded with
"WL0.field =?"
没有设置的值输出代替?
所以,问题是:是否可以将该JPQL语言转换为纯SQL,以便在查询分析器中运行?
同样,每次我需要测试特定场景时,查询都非常大,我需要接近一个多小时才能填写所有内容。
必须有一个java方法或实用程序才能从我的EJB类中访问它
请帮忙!!!