发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA

Hibernate用户自定义数据类型问题

2006-07-27 10:30
赞助商链接

各位大侠,我项目的数据库是oracle字符集是UTF-8
数据库中使用Clob存储数据。
我自己写了一个自定义数据类型
public class StringClobType implements UserType {
public Object nullSafeGet(ResultSet arg0, String[] arg1, Object arg2)
throws HibernateException, SQLException {
String ret = null;
StringBuffer buffer = new StringBuffer();
try {
// First we get the stream
InputStream is = arg0.getAsciiStream(arg1[0]);
byte[] buf = new byte[1024];
int read = -1;

while ((read = is.read(buf)) > 0) {
buffer.append(new String(buf, 0, read,"UTF-8"));
}
is.close();
} catch (IOException ioe) {
ioe.printStackTrace();
throw new HibernateException("Unable to read from resultset", ioe);
}
ret = buffer.toString();
return ret;
}

/*
* (non-Javadoc) (at) see org (dot) hibernate.usertype.UserType#nullSafeSet
* (java.sql.PreparedStatement, java.lang.Object, int)
*/
public void nullSafeSet(PreparedStatement pst, Object data, int index)
throws HibernateException, SQLException {
data = data == null ? new String() : data;
String in = (String) data;

byte[] buf = null;
try {
buf = in.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
buf = in.getBytes();
throw new HibernateException(e.getMessage());
}
int len = buf.length;

ByteArrayInputStream bais = new ByteArrayInputStream(buf);

pst.setAsciiStream(index, bais, len);

}
我的问题是,存入数据库的数据汉字全部变成了乱码!请问哪位知道问题何在

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com