2010-09-24 16 views
0

我已經試過這樣:如何從本地查詢獲取Clob數據?

List resultList = session.createSQLQuery("select pack.FuncName ClobData from dual").list() 

whereis FuncName它的函數返回CLOB數據的名稱。但在​​我看到一些代理對象(例如$Proxy189)。我相信......這很簡單,我不想讓我的數據反思。

+0

這http://stackoverflow.com/questions/1703351/how-to-call- a-oracle-function-from-hibernate-with-return-parameter幫助我。但正如我所看到的,使用本地呼叫並不是一個好習慣。因爲我們正在失去Hibernate的優勢。 – karabara 2010-09-27 06:33:44

回答

0

是的,直接啓動SQL查詢不是一個好主意(默認情況下)使用ORM。

也許在您的案例中更適合的解決方案之一是將您的FuncName返回的CLOB數據映射到新的非託管實體(如果是這種情況)。您可以創建一個適合您需求並獲取數據的新實體。例如,您可以閱讀關於它的here

當然,其他解決方案可以是,啓動準備/建立clob數據的功能,將其保存(例如在臨時表結構中),然後使用@Lob註釋加載它。檢查有關Property mapping with annotations

0

我發現這解決了類似的問題,對我來說,無需代理或自定義轉換器參考:

createSQLQuery("...").addScalar("clob_field", StandardBasicTypes.MATERIALIZED_CLOB);