如何处理DataIntegrityViolationException以获取具体原因?

时间:2016-05-14 13:03:15

标签: java mysql spring hibernate jpa

我正在开发一个java网络应用程序。该应用程序是一个REST风格的后端。我使用spring mvc作为我的web框架,使用JPA / Hibernate作为持久性。数据库是mysql。

我在数据库中有一个表,我在其中存储一个带有id的简单文本值。所以我有两列。但是,我想使这些文本值唯一。已经在sql中设置了这个。

现在我正在编写一个单元测试来处理当有人试图多次插入相同字符串时会发生什么。 Spring返回一个DataIntegrityViolationException。根本原因是MySQLIntegrityConstraintViolationException。从根本原因我可以得到sqlErrorCode。

但是有更好的方法来解决这个问题吗?因为我不想对mysqlexception有依赖性,并且我的代码中有错误代码。

1 个答案:

答案 0 :(得分:1)

我觉得搜索由spring数据包装的数据库异常导致根本原因不方便。在将新条目持久保存到数据库之前,我会手动检查唯一性。

请记住,spring引发的异常是RuntimeException,你不应该处理RuntimeException,因为它们表示" bug"在代码中。你的责任是从一开始就不会抛出这种情况。