簡體   English   中英

使用JPA / Hibernate的存儲過程的結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM