org.hibernate.AssertionFailure: null id 错误

对象属性有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)使用介绍可查看其它介绍

因此在处理这类特殊对象的时候应由其要注意这种细节
时间: 2024-12-15 01:56:57

org.hibernate.AssertionFailure: null id 错误的相关文章

org.hibernate.AssertionFailure: null id in com.you.model.User entry (don't flush the Session after a

1.错误描述 org.hibernate.AssertionFailure: null id in com.you.model.User entry (don't flush the Session after an exception occurs) at org.hibernate.event.internal.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:77) at org.hib

org.hibernate.AssertionFailure: null id in xxx.xx.xx的问题

今日在开发时遇到一个比较奇怪的问题,保存时报这个异常: Java代码   org.hibernate.AssertionFailure: null id in com.aa.TShoucang null id,这个是什么回事呢?数据库是自动增长了,hibernate映射文件也一切正常的了,看了后台也打印出了insert into ....这个的语句了,但为什么就是插入不成功呢? 本着知之为知之,不知google之的精神,google了一下,都是说数据库与映射文件不对应,数据库设置了不为null,

org.hibernate.AssertionFailure: null id don‘t flu

严重: Servlet.service() for servlet default threw exceptionorg.hibernate.AssertionFailure: null id in com.iprecare.entity.Inventroyrecord entry (don't flush the Session after an exception occurs)    at org.hibernate.event.def.DefaultFlushEntityEventLis

java错误:org.hibernate.AssertionFailure: null id in xxx.xx.xx的问题

经常遇到这种问题,在添加数据的时候: 看到这种情况,你是不是容易想到配置问题?缓存问题?主键问题? 不过一般只要不是新项目,而且主键已经配置了自动增长,那么就是其它问题了. 以下就是我遇到过的比较坑人的现象,但往往不会想到这方面,浪费不少时间: 1.做添加功能时,因为新加了个字段,结果数据库的字段忘了添加,然后就报这错: 2.数据库字段和代码中配置类型没有匹配(比如价格在数据库中是个double,代码中写了个String):

null id in entry (don't flush the Session after an exception occurs)

null id in entry (don't flush the Session after an exception occurs) 遇到这个异常实属不小心所致,最初看到异出的错误信息时我误认为是主键为空所致.一着急竟然把entry当成了entity理解,真是让人笑话^_^. 其实个该异常信息是在提示我们没有为数据中的非空字段设置值.呵呵!看,够笨的吧.怎么会忘记为非空字段设置值呢?当然一般我们是不会犯这样的错.但是需要说的一点是,在数据的设计中比如SqlServer,我们为某个非空字段设置

org.hibernate.AssertionFailure:collection[......] was not processed by flush()

八月 12, 2016 11:00:49 上午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet [zyg] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.transaction.TransactionSy

org.hibernate.TypeMismatchException: Provided id of the wrong type for class cn.itcast.entity.User. Expected: class java.lang.String, got class java.lang.Integer at org.hibernate.event.internal.Defau

出现org.hibernate.TypeMismatchException: Provided id of the wrong type for class cn.itcast.entity.User. Expected: class java.lang.String, got class java.lang.Integer at org.hibernate.event.internal.DefaultLoadEventListener.checkIdClass(DefaultLoadEvent

null id in entry (don't flush the Session after an exception occurs) 解决方法

最近在学习基于ssh的注解的系统,然后在实现往数据库增加记录时可以增加第一个,第二个就报错,在网上查了很多资料,大多都是 该异常信息是在提示我们没有为数据中的非空字段设置值. 然后就一直没有明白 明明都赋值了 为什么还会这样 ,然后我把unique字段和非空字段去掉即//@Column(name = "zh", unique = true, nullable = false)就好了. null id in entry (don't flush the Session after an

java.net.BindException: Address already in use: JVM_Bind <null>:8080错误

今天打开myeclipse出现java.net.BindException: Address already in use: JVM_Bind <null>:8080错误 从网上搜了一下大多是讲端口被占用 用netstat -ano 查看8080端口,根据PID结束对应的进程. 表示很无语,我用命令查看8080端口没有被占用,下面是我搜索的另外的解决方法,我的能够成功解决. 在tomcat--->bin/startup.bat 编辑 添加java的环境就可以了: set JAVA_HOM