如何从本机查询中获取Clob数据?

时间:2010-09-24 15:35:39

标签: java sql hibernate

我试过这个:

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

whereis FuncName它是返回clob数据的函数的名称。但在resultList中,我看到了一些代理对象(例如$Proxy189)。我相信......这很简单,我不想反射来获取我的数据。

2 个答案:

答案 0 :(得分:0)

是的,使用ORM直接启动SQL查询不是一个好主意(默认情况下)。

在您的案例中可能更适合的解决方案之一可能是将您的FuncName返回的CLOB数据映射到新的非托管实体(如果是这种情况)。您可以创建符合您要求的新实体并获取数据。例如,您可以阅读here

当然其他解决方案可以是,启动准备/构建clob数据的函数,保存它(例如在临时表结构中),然后使用@Lob注释加载它。查看有关Property mapping with annotations

的参考

答案 1 :(得分:0)

我发现这解决了类似的问题而不需要代理或自定义转换器:

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