版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zzg19950824/article/details/82832607
将最近碰到的一些异常做一个小的总结
这些异常有的是当时找了半天不明白原因,现在再回头看反而感觉简单无比,有点犹豫要不要放上来。。。。
一 . 主要:
1 . java.lang.NumberFormatException: For input string: “11111111001”
本来只是一个简单的数据转换异常,放上来的主要原因是 :我数据库存的是Int类型,但是这里转换的String超过了int的长度,所以报的这个异常 。
小结 :对于NumberFormat异常,在确定没有明显代码错误的情况下 , 应该考虑类型的长度,通常int类型是-232 —232-1 , 也就是-2147483648 到 2147483647 。
2 . java.util.ConcurrentModificationException
这是一个同时修改异常 ,这也是一个转了牛角尖就想不到的一个异常 ,这涉及到一个小知识点 , 早for each循环的时候 , 是不能去删除集合中的对象的(原因好像是foreach底层采用的是iteration 迭代方式去循环,此方式只能只读对象)
解决方式:
- 采用同步锁 :但是如果只针对foreach, 这个意义不大
- 创建新集合,for循环后删除
- 采用原始for循环
3 . @OneToMany org.hibernate.id.IdentifierGenerationException
使用hibernate的oneToMany的时候,因为某个主键为空导致发现id为空出现该异常
解决方式:
- 允许为null
- 修改主键生成策略
4 .Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: com.…… column
一个pojo中不能有两个属性同时映射到一个数据库字段上,
即使是一个属性的两个getter方法也不行
解决方式:
- insertable = false ,updatable = false
@JoinColumn(name = "number", referencedColumnName = "numberother", nullable = false, insertable = false ,updatable = false)
5 .singleresult javax.persistence.NoResultException: No entity found for query
使用hibernate singleresult 时返回的结果为空会报该异常
解决方式:
- 使用getResultlist + 获取第一位
这样整体会灵活很多,判断是否有,然后选择性的获取
总结 :
还有一些现在看起来实在太逗了 , 就不贴上来取乐了。。。。
bug不断,其乐无穷~~~