私はPostgresにストアドプロシージャを持っています。この手順には4つのOUTパラメータがあります。通常JPAを使用すると結果が得られません。私がしようとしているのは、そのプロシージャでSELECTクエリを使用することです。例えばJPAストアドプロシージャを呼び出すHibernate
私はpgAdminでに問い合わせてみた場合:get_results(arg0は、ARG1など)から、
SELECT *を;
4つの列を含む1つの結果行と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!
任意の提案を投げますか?
エラーメッセージは、トランザクションの問題を指しています。他のネイティブクエリ(テーブルからの選択など)はその場所で機能しますか? – mrab
私はcountで同じクエリを試しました。 em.createNativeQuery( "SELECTカウント(*)からget_results(arg0、arg1など)"); q.getSingleResult(); と私は結果として私が期待していた数字 "1"を取得します。それは動作します。しかし、今私は通常のクエリを試して: "[ConnectionManager]トランザクション完了時にバッチャーリソースクリーンアップを強制する; ScrollableResults/Iterato rを閉じるのを忘れましたか?"エラー。 – Panos