[英]Result from stored procedure using JPA/Hibernate
我試圖通過在EJB無狀態會話bean中使用Hibernate從存儲過程中檢索結果。
該存儲過程在MS SQL Server 2008上運行,並使用一個整數作為參數並返回另一個整數。
我設法使用
Query q = em.createNativeQuery("name_of_my_procedure :param");
q.setParameter("param", sequence);
q.executeUpdate().
使用getResultList或getSingleResult而不是executeUpdate總是會導致一個有趣的異常。
在EJB 3.0 in Action中,我發現了這一點:
JPA不支持存儲過程,因此您必須依賴持久性提供程序的專有功能
我發現了幾篇關於通過SQL連接使用CallableStatement的文章,但是這種解決方案看起來非常不合適。
有沒有辦法使用Hibernate來檢索我生成的ID?
謝謝。
弗雷德
FYI JPA 2.1不能(或者將在發布時支持) 存儲過程API ,因此不能解決您的問題。 提供此AFAIK的唯一JPA實現是DataNucleus JPA。
最終,我使用另一個存儲過程對其進行了修復。
我創建了一個新的存儲過程來調用另一個存儲過程,並將結果存儲在一個臨時表中。 我在該臨時表上映射了一個實體,現在可以檢索所需的信息。
我知道這不是最優雅的方法,但是我不想將SQL連接代碼與JPA代碼混合/使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.