201809异常小结

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 迭代方式去循环,此方式只能只读对象)

解决方式:
  1. 采用同步锁 :但是如果只针对foreach, 这个意义不大
  2. 创建新集合,for循环后删除
  3. 采用原始for循环

3 . @OneToMany org.hibernate.id.IdentifierGenerationException

使用hibernate的oneToMany的时候,因为某个主键为空导致发现id为空出现该异常

解决方式:
  1. 允许为null
  2. 修改主键生成策略

4 .Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: com.…… column

一个pojo中不能有两个属性同时映射到一个数据库字段上,
即使是一个属性的两个getter方法也不行

解决方式:
  1. 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 时返回的结果为空会报该异常

解决方式:
  1. 使用getResultlist + 获取第一位
    这样整体会灵活很多,判断是否有,然后选择性的获取

总结 :

还有一些现在看起来实在太逗了 , 就不贴上来取乐了。。。。
bug不断,其乐无穷~~~

猜你喜欢

转载自blog.csdn.net/zzg19950824/article/details/82832607
今日推荐