前天遇到一个以前从没见过的怪异问题,无论用hibernate的那种查询方法都无法执行一个单表查询(最后排查出其他表关联了此表,刚开始一直以为是一个单独的表),在执行查询前就开始抛出空值异常(还没有产生SQL语句),异常如下:
百思不得其解....最后还是czx566兄,贴出一个地址进去翻阅总算找到答案,再次表示感谢 !详见(http://www.iteye.com/topic/310997)
总结:引起此类问题的原因一般存在于hibernate把查询转换为HQL语句的时候,转换中出了异常,引起异常大部分应该是由于类型不匹配引起,如果传的查询参数和查询用法都对,并且此表的数据也没问题,那么引起异常的数据一定在其他关联表里面!上面的异常就是因为在另一张表里面存在一个乐观锁的字段,此字段恰好为null而乐观锁声明的是int结果在进行转换操作的时候就会出现null值异常。(乐观锁字段在建表的时候一定要给个默认值,千万别出现null!)
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!)