Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将对象转换为CLOB_Java_Oracle - Fatal编程技术网

Java 将对象转换为CLOB

Java 将对象转换为CLOB,java,oracle,Java,Oracle,我有一个对象数组(它是Oracle数据库中本机查询的输出),其中第一个元素是CLOB数据类型,需要转换为java字符串对象。我将如何实现这一点?请帮忙 String sql = "select id, data from mytable"; List< Object[] > results = getEntityManager().createNativeQuery(sql).getResultList(); Map< Long, String >

我有一个对象数组(它是Oracle数据库中本机查询的输出),其中第一个元素是CLOB数据类型,需要转换为java字符串对象。我将如何实现这一点?请帮忙

 String sql = "select id, data from mytable";
            List< Object[] > results = getEntityManager().createNativeQuery(sql).getResultList();
Map< Long, String > map = new HashMap<>();
        for (Object[] result : results) {
            map.put(((Number) result[0]).longValue(), (String) result[1]);
        }
 @Lob
 @Column(name = "DATA")
 byte[] clobData
String sql=“选择id,mytable中的数据”;
Listresults=getEntityManager().createNativeQuery(sql).getResultList();
MapMap=newhashmap();
对于(对象[]结果:结果){
map.put(((数字)结果[0]).longValue(),(字符串)结果[1]);
}
data是mydata表中具有CLOB数据类型的列。 结果(1)将包含我的CLOB数据

 @Lob
 @Column(name = "DATA")
 byte[] clobData

在放入HashMap时,我需要将结果(1)解析为字符串

如果CLOB的长度足够小(results=getEntityManager().createNativeQuery(sql).getResultList();
 @Lob
 @Column(name = "DATA")
 byte[] clobData
MapMap=newhashmap(); Clob Clob=(Clob)结果[1]; String value=clob.getSubString(1,(int)clob.length(); map.put(((数字)结果[0]).longValue(),value); 请注意,您的原始代码中的循环是完全无用的,所以我删除了它

 @Lob
 @Column(name = "DATA")
 byte[] clobData

还要检查
result[1]
是否是
java.sql.Clob

作为我的查询的解决方案,摆脱了本机查询,改用hibernate。
 @Lob
 @Column(name = "DATA")
 byte[] clobData
用javax.persistence.Lob映射我的CLOB列

 @Lob
 @Column(name = "DATA")
 byte[] clobData

请提供一个包含复制您的问题所需的java(以及,如有必要,SQL)代码的列表。添加了我的代码。请检查可能的重复项。我已更新了我的查询。请立即检查好吗?@PeaceIsPearl抱歉,我看不出您还需要什么,除了您必须用
((clob)结果[1]替换
clob
)]
。我可以在我的答案中添加这一点。感谢您编辑代码。但我需要for循环,因为我需要多个id和数据行。没关系,这不是问题。我尝试了以下方法:Clob数据=(Clob)结果[1];数据如下所示:clob2:STRINGDECODE('name'pearl'\n validations'))。进一步搜索了STRINGDECODE函数,它就在那里,因为我在clob数据中有一个换行符。如果我删除了换行符,我会看到数据如下所示:clob2:('name'pearl''validations')我正在尝试使此查询在H2数据库上运行。