环境:Oracle 11g、Weblogic 9.2、Java 4、驱动程序:oracle.jdbc.OracleDriver
上下文:我想从数据库中提取 xml 值,并使用以下选择在 Java 中处理结果:
SELECT EXTRACT(XML_TEXT, 'PATH/TO/XML/VALUE/text()').getClobVal() AS VALUE
FROM MYTBALE WHERE id =xxxx;
问题:在 SQL Developer 中,我确实可以很好地看到检索到的字符串,但在 Java 中:
- 如果我使用
getClobVal()
函数,Weblogic 将返回一个weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB
类型的包装对象,我无法转换或解开该对象。 - 如果我不使用
getClobVal()
,则会返回oracle.sql.Opaque
,我也无法将其转换为任何内容。
代码: 使用 getClobVal():
...
HashMap <String, Object> element = (HashMap) iter.next();
String value = (unwrap & cast in some way ) element.get("VALUE");
...
我找不到从该对象获取字符串的方法,有什么想法吗?
编辑: 我无法禁用 Weblogic 换行。我正在考虑在数据库端采取一些解决方法来获取 blob。
最佳答案
在 WebLogic 控制台中禁用数据类型包装(在连接池
-> 高级
下,请参阅 here )。重新启动服务器,现在您将获得一个 oracle.sql.CLOB
对象,而不是 weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB
对象。
编辑:对于该特定方法/类,您可以使用特定供应商连接 (getVendorConnection()
method ),该连接应返回未包装的对象。
关于java - 如何从 weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB 获取字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55244160/