当前位置: 首页 > 知识库问答 >
问题:

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

索嘉胜
2023-03-14

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

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

现在我正在编写一个unittest来处理当有人试图多次插入同一个字符串时会发生什么。Spring返回给我一个数据完整性违反异常。根本原因是MySQLWellityConstraintViolationExc0019。从根本原因我可以得到sqlErrorCode.

但是有没有更好的方法来处理这个问题呢?因为我不想依赖mysqlexception,而且代码中没有错误代码。

共有1个答案

黄永怡
2023-03-14

我发现搜索由spring数据包装的DB异常的根本原因很不方便。在将新条目持久化到数据库之前,我将手动检查唯一性。

请记住,spring引发的异常是一个RuntimeException,您不应该处理RuntimeExceptions,因为它们表示代码中存在“bug”。这是你的责任,从一开始就不允许这种例外。

 类似资料:
  • 问题内容: 我需要在Spring 3.0应用程序中显示自定义消息。我有一个带有Hibernate的数据库,并且有几个约束。我对如何妥善处理存有疑问。我想知道是否有一种方法可以将异常映射到属性文件中的消息集,因为可以在约束验证中进行。我可以以任何方式自动处理它,还是必须在每个控制器中捕获此异常? 问题答案: 在违反约束的情况下显示用户友好消息的问题是,当将Hibernate的转换为Spring的时,

  • 问题内容: 我在web.xml中配置了一个错误servlet: 对? 在我的(通常)servlet中: 因此,在这种情况下,“ e”将是根本原因。 在我的ExceptionHandler类中,我有: 这就是问题。throwable.getCause()为null。 问题答案: 如果由servletcontainer捕捉到的异常是和声明捕捉异常 其他 比,那么它的原因实际上是打开并作为存储。因此,您

  • 我使用的是Spring Boot 2和Spring Boot starter数据jpa以及底层的MariaDB。 我有一个带有唯一键“用户名”的表。如果违反了此约束,我想捕获,但似乎Spring正在记录并且不会在记录后重新抛出(我最好的猜测)。被抛出。 我想在中捕获。 以下是几段代码片段: 堆栈跟踪:

  • 我将JPA2与Hibernate一起使用。有两个实体类,和。最后一个是第一个的继承实体。使用SINGLE_TABLE继承策略。当我尝试通过从id=“123456”的CardElement中查询

  • 下面的API接受来自客户端的json字符串,并将其映射到电子邮件对象中。如何将请求正文()作为原始字符串获取?(我需要原始字符串和键入版本的参数) PS:这个问题不是重复的:如何在SpringREST控制器中访问普通json主体?

  • 我正在使用selenium java script exceuter执行下面的javascript,我想从fetch调用返回响应,并想将其存储在代码中的java变量中。但下面的代码显示了脚本超时,有什么建议吗?我怎样才能达到以上要求???