码迷,mamicode.com
首页 > Web开发 > 详细

org.hibernate.AssertionFailure: null id 错误

时间:2017-02-15 23:36:46      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:getc   assertion   etc   stream   无法   input   fail   二次   nat   

对象属性有Blob类型;

而Blob需在输入流中读取;

InputStream in = new FileInputStream(url.getFile());
Blob bookPic = lobHelper.createBlob(in, in.available());
book.setBookPic(bookPic);
book2.setBookPic(bookPic);

如对象bookPic第二次使用的时候以无法再从in 中读取信息,因此报错

改进方法:
重新获取一次in

或使用 in.mark(int)与 in.reset() 但是FileInputStream流对象此方法无效

因此可改用 BufferedInputStream

如:
LobHelper lobHelper = session.getLobHelper();
InputStream in = new BufferedInputStream(new FileInputStream(this.getClass().getResource("/j.jpg").getFile()));
in.mark(in.available());
Blob bookPic = lobHelper.createBlob(in, in.available());

book.setBookPic(bookPic);
//调用流的reset()
in.reset();
book2.setBookPic(bookPic);

具体reset()  与mark(int)使用介绍可查看其它介绍

因此在处理这类特殊对象的时候应由其要注意这种细节

org.hibernate.AssertionFailure: null id 错误

标签:getc   assertion   etc   stream   无法   input   fail   二次   nat   

原文地址:http://www.cnblogs.com/infoo/p/6403735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!