【发布时间】:2012-04-23 06:55:10
【问题描述】:
我在 Postgres 中有一个存储过程。该过程有 4 个 OUT 参数。通常使用 JPA 我无法得到结果。我想要做的是在该过程中使用 SELECT 查询。
例如,如果我在 pgAdmin 中尝试查询:
SELECT * FROM get_results (arg0, arg1 等);
我得到一个包含 4 列的结果行,其中包含 4 个 OUT 参数的结果。
但是当我尝试在 JPA 中使用它时它失败了。我正在尝试类似:
Query q = em.createNativeQuery("SELECT * FROM get_results (arg0, arg1 etc)");
q.getSingleResult();
但它会抛出一个java.lang.IllegalStateException [com.arjuna.ats.internal.jta.transaction.arjunacore.nosuchtx] [com.arjuna.ats.internal.jta.transaction.arjunacore.nosuchtx] No such transaction!
有什么建议吗?
【问题讨论】:
-
错误信息指向事务问题。其他本地查询(例如从表中选择)是否在该位置工作?
-
我用 count 尝试了相同的查询。 em.createNativeQuery("SELECT count(*) FROM get_results (arg0, arg1 etc)"); q.getSingleResult();结果我得到了数字“1”,这是我所期待的。所以它有效。但是现在当我尝试正常查询时,我得到一个:“[ConnectionManager] 在事务完成时强制清理批处理器资源;忘记关闭 ScrollableResults/Iterato r?”错误。
标签: java hibernate postgresql stored-procedures jpa