升级Hibernate5,捕捉异常遇到的坑!
Posted qq_41427281
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了升级Hibernate5,捕捉异常遇到的坑!相关的知识,希望对你有一定的参考价值。
1.升级版本
hibernate-core:4.3.9 升级为hibernate-core:5.5.4
2.遇到的问题
问题描述
升级后的主键冲突异常-ConstraintViolationException ,没有被捕捉到,因为hibernate5相较于之前的版本抛出的异常是其父类-PersistenceException(严格说是父类的父类的父类)。
ConstraintViolationException 的父类为JDBCException;
JDBCException的父类为HibernateException;
HibernateException的父类为PersistenceException。
详情
捕捉异常代码如下:
catch (ConstraintViolationException e) { if (tx != null) { tx.rollback(); } throw new EntityExistException("已存在相同XXX信息,无法添加!", e); }
升级hibernate5之前,捕捉的异常如图:
升级后,捕捉的异常如图:
3.解决方法
判断是可以使用e.getCause()判断
方法一
catch (PersistenceException e) { if (tx != null) { tx.rollback(); } if (e.getCause() instanceof ConstraintViolationException) { throw new EntityExistException("已存在相同XXX信息,无法添加!", e); } else { throw e; } }
方法二
catch (PersistenceException e) { if (tx != null) { tx.rollback(); } if (e.getCause().getCause().getMessage().contains("某某主键名")) { throw new EntityExistException("已存在相同的XXX,请联系XXX!", e); } else { throw e; } }
大家如果有更好的方法,欢迎在评论区赐教!!!
以上是关于升级Hibernate5,捕捉异常遇到的坑!的主要内容,如果未能解决你的问题,请参考以下文章
JavaCV升级1.5.6之后遇到h265/hevc编码的视频无法打开编解码器avcodec_open2() error -1:Could not open video codec异常解决办法(代码片