我试过这个:
List resultList = session.createSQLQuery("select pack.FuncName ClobData from dual").list()
whereis FuncName
它是返回clob数据的函数的名称。但在resultList
中,我看到了一些代理对象(例如$Proxy189
)。我相信......这很简单,我不想反射来获取我的数据。
答案 0 :(得分:0)
是的,使用ORM直接启动SQL查询不是一个好主意(默认情况下)。
在您的案例中可能更适合的解决方案之一可能是将您的FuncName
返回的CLOB数据映射到新的非托管实体(如果是这种情况)。您可以创建符合您要求的新实体并获取数据。例如,您可以阅读here。
当然其他解决方案可以是,启动准备/构建clob数据的函数,保存它(例如在临时表结构中),然后使用@Lob注释加载它。查看有关Property mapping with annotations
的参考答案 1 :(得分:0)
我发现这解决了类似的问题而不需要代理或自定义转换器:
createSQLQuery("...").addScalar("clob_field", StandardBasicTypes.MATERIALIZED_CLOB);