201809异常小结

将最近碰到的一些异常做一个小的总结
这些异常有的是当时找了半天不明白原因,现在再回头看反而感觉简单无比,有点犹豫要不要放上来。。。。

一 . 主要:

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不断,其乐无穷~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值