前天遇到一个以前从没见过的怪异问题,无论用hibernate的那种查询方法都无法执行一个单表查询(最后排查出其他表关联了此表,刚开始一直以为是一个单独的表),在执行查询前就开始抛出空值异常(还没有产生SQL语句),异常如下:
java.lang.NullPointerException
at org.hibernate.type.LongType.next(LongType.java:56)
at org.hibernate.engine.Versioning.increment(Versioning.java:25)
at org.hibernate.event.def.DefaultFlushEntityEventListener.getNextVersion(DefaultFlushEntityEventListener.java:353)
at org.hibernate.event.def.DefaultFlushEntityEventListener.scheduleUpdate(DefaultFlushEntityEventListener.java:243)
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:114)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:195)
.....
百思不得其解....最后还是czx566兄,贴出一个地址进去翻阅总算找到答案,再次表示感谢 !详见(http://www.iteye.com/topic/310997)
总结:引起此类问题的原因一般存在于hibernate把查询转换为HQL语句的时候,转换中出了异常,引起异常大部分应该是由于类型不匹配引起,如果传的查询参数和查询用法都对,并且此表的数据也没问题,那么引起异常的数据一定在其他关联表里面!上面的异常就是因为在另一张表里面存在一个乐观锁的字段,此字段恰好为null而乐观锁声明的是int结果在进行转换操作的时候就会出现null值异常。(乐观锁字段在建表的时候一定要给个默认值,千万别出现null!)
分享到:
相关推荐
Hibernate乐观锁和悲观锁分析,针对在使用HIBERNATE时怎么配置乐观锁进行了详细的范例讲解
其中通过 version 实现的乐观锁机制是 Hibernate 官方推荐的乐观锁实现,同时也是 Hibernate 中,目前唯一在数据对象脱离 Session 发生修改的情况下依然有效的锁机制。因此,一般情况下,我们都选择 version 方式...
Hibernate的乐观锁与悲观锁的文档,帮助学习Hibernate的乐观锁与悲观锁,让你们学得更轻松。
学习hibernate的必备知识,当你学习hibernate时,就会对锁的概念有一定的了解了.
hibernate的乐观锁和悲观锁,两种锁搞定一切
NULL 博文链接:https://12345678.iteye.com/blog/721836
乐观锁 求助编辑百科名片相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。但随之而来的就是数据库 性能的大量开销,特别是对长事务而...
NULL 博文链接:https://tgwall163.iteye.com/blog/1291892
Hibernate锁机制_悲观锁和乐观锁
很好的描述Hibernate的悲观锁和乐观锁,
Hibernate高级特性,悲观锁与乐观锁的应用和区别,及两者之间的区别。
NULL 博文链接:https://cdxs2.iteye.com/blog/1938245
乐观锁version 对于在Hibernate中的乐观锁和悲观锁的学习
Hibernate 多表连接分页查询示范项目 Hibernate Criteria 多表连接 分页
主要介绍了Hibernate实现悲观锁和乐观锁的有关内容,涉及hibernate的隔离机制,以及实现悲观锁和乐观锁的代码实现,需要的朋友可以了解下。
hibernate多表联合查询实例,很经典的查询语句和总结.
hibernate查询之HQLhibernate查询之HQLhibernate查询之HQL
Hibernate连表查询 Hibernate连表查询
hibernate里面的 两种查询 离线查询 和 HQL语句查询