hibernate 写入 clob 问题
哎,今天辛苦了一天,就是为了使用hibernate实现clob字段的插入,我使用的环境是hibernate 3.0和class12的开发包,当执行到
。。。。。
ssSession.save(cMail);
ssSession.flush();
szTypeID = cMail.getTypeId();
ssSession.refresh(cMail, LockMode.UPGRADE);
SerializableClob clob=(SerializableClob)cMail.getContent();
oracle.sql.CLOB tmpClob = (oracle.sql.CLOB) clob.getWrappedClob();
java.io.Writer pw = tmpClob.getCharacterOutputStream();
pw.write(strContent);
pw.flush();
pw.close();
ssSession.flush();
tx.commit();
时候总报出类型转化错误,但是我看实际取出来就是tmpClob oracle.sql.CLOB但是就是造型错误,真的要人命啊,在网上找了好久没有看到这个解决方法,有人说换最新的oracle驱动就可以了,但是我们现在工程已经做的差不多了,更新驱动可能会有很多问题,没有办法,只能找可有什么好点的方案,原来问题是
在我的netbeans bulid下面lib 中有class12.jar tomcat中的lib中也有class12.jar,两个重复的jar会造成造型错误,真的很郁闷,把工程中的依赖包删除就可以了,呵呵,希望以后朋友遇到这样的问题不要象我这样又重复了一天的工作,真的很不爽session.save(user);
session.flush();
session.refresh(user, LockMode.UPGRADE);
SerializableBlob sb = (SerializableBlob)user.getPhoto();
java.sql.Blob wrapblob = sb.getWrappedBlob();
oracle.sql.BLOB blob = (oracle.sql.BLOB) wrapblob;
OutputStream output = blob.getBinaryOutputStream();
FileInputStream input=new FileInputStream("E:/PHOTO/baby/c0.jpg");
byte b []=new byte[80*1024];
input.read(b);
output.write(b);
input.close();
output.close();
SerializableClob sc=(SerializableClob)user.getResume();
java.sql.Clob wrapclob=sc.getWrappedClob();
oracle.sql.CLOB clob=(oracle.sql.CLOB)wrapclob;
java.io.Writer writer=clob.getCharacterOutputStream();
writer.write("This is the second clob");
session.save(user);
tx.commit();
}
}
这是我写的一个测试的方法,我用的就是classes12.jar 没有问题啊