我已經試過這樣:如何從本地查詢獲取Clob數據?
List resultList = session.createSQLQuery("select pack.FuncName ClobData from dual").list()
whereis FuncName
它的函數返回CLOB數據的名稱。但在我看到一些代理對象(例如$Proxy189
)。我相信......這很簡單,我不想讓我的數據反思。
我已經試過這樣:如何從本地查詢獲取Clob數據?
List resultList = session.createSQLQuery("select pack.FuncName ClobData from dual").list()
whereis FuncName
它的函數返回CLOB數據的名稱。但在我看到一些代理對象(例如$Proxy189
)。我相信......這很簡單,我不想讓我的數據反思。
是的,直接啓動SQL查詢不是一個好主意(默認情況下)使用ORM。
也許在您的案例中更適合的解決方案之一是將您的FuncName
返回的CLOB數據映射到新的非託管實體(如果是這種情況)。您可以創建一個適合您需求並獲取數據的新實體。例如,您可以閱讀關於它的here。
當然,其他解決方案可以是,啓動準備/建立clob數據的功能,將其保存(例如在臨時表結構中),然後使用@Lob註釋加載它。檢查有關Property mapping with annotations
我發現這解決了類似的問題,對我來說,無需代理或自定義轉換器參考:
createSQLQuery("...").addScalar("clob_field", StandardBasicTypes.MATERIALIZED_CLOB);
這http://stackoverflow.com/questions/1703351/how-to-call- a-oracle-function-from-hibernate-with-return-parameter幫助我。但正如我所看到的,使用本地呼叫並不是一個好習慣。因爲我們正在失去Hibernate的優勢。 – karabara 2010-09-27 06:33:44