联系博主          博客地图
           
在项目中需要向一数据库表中插入xmltype类型的值,当数据值未超过4000时,没有问题,超过4000需要写类型的处理类。
其中回调类名称为XMLTypeHandlerCallback
关键方法如下:标红的为报错的信息,Cause: java.lang.UnsupportedOperationException: XMLType mapping only supported for Oracle RDBMS
这个问题想不太明白,请执教。
public void setParameter(ParameterSetter setter, Object parameter)
throws SQLException {
System.out.println(setter.getPreparedStatement().getClass().toString());
System.out.println("开始判断是否是实例");
if (setter.getPreparedStatement() instanceof OraclePreparedStatement) {
System.out.println("结束实例判断");
OraclePreparedStatement ops = (OraclePreparedStatement) setter.getPreparedStatement();
System.out.println("blw002");
if (parameter == null) {
System.out.println("blw");
ops.setNull(setter.getParameterIndex(),
oracle.jdbc.OracleTypes.OPAQUE, "SYS.XMLTYPE");
} else {
System.out.println(parameter.toString());
XMLType xmlInput = XMLType.createXML(ops.getConnection(),
(Document) parameter);
// Document doc = DocumentHelper.parseText(parameter.toString(), false);
// XMLType xmlInput = XMLType.createXML(ops.getConnection(),doc);
// System.out.println(xmlInput.getStringVal());
ops.setObject(setter.getParameterIndex(), xmlInput);
}
} else {
throw new UnsupportedOperationException(
"XMLType mapping only supported for Oracle RDBMS");
}
}




    核心: 勇敢进取年轻的心

 

Feedback

# re: ibatis处理oracle数据库中xmltype的问题[未登录]  回复  更多评论   

2012-11-21 12:52 by 飞鸟
有遇到类似问题的吗

# re: ibatis处理oracle数据库中xmltype的问题  回复  更多评论   

2012-11-22 12:36 by 怎么羡慕天空的飞鸟
已解决,
问题是ibatis使用了代理。
添加如下代码即可解决
PreparedStatement ps=((PreparedStatementLogProxy)Proxy.getInvocationHandler( setter.getPreparedStatement())).getPreparedStatement();

# re: ibatis处理oracle数据库中xmltype的问题  回复  更多评论   

2013-05-07 17:12 by 虫虫大帅
能详细说下是如何解决的吗?

只有注册用户登录后才能发表评论。


网站导航:
 

Copyright © 怎么羡慕天空的飞鸟