Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DataIntegrityViolationException如何使用JPA进行持久化处理_Java_Spring Boot_Jpa_Exception - Fatal编程技术网

Java DataIntegrityViolationException如何使用JPA进行持久化处理

Java DataIntegrityViolationException如何使用JPA进行持久化处理,java,spring-boot,jpa,exception,Java,Spring Boot,Jpa,Exception,我正在使用JpaRepository,JpaSpecificationExecutor将数据持久化到数据库中。我的公司不允许我们使用hibernate。我的问题是:需要一种方法来处理3 cenarios中的DataIntegrityViolationException什么是: 违反唯一密钥 尝试将空值插入到非空值的列中 尝试引用(外键)列为的表不存在。 .... 我的实际解决办法是: 我认为您应该创建ExceptionResolverService,并在此服务中定义应根据消息返回的异常,您在

我正在使用JpaRepository,JpaSpecificationExecutor将数据持久化到数据库中。我的公司不允许我们使用hibernate。我的问题是:需要一种方法来处理3 cenarios中的DataIntegrityViolationException什么是:

  • 违反唯一密钥
  • 尝试将空值插入到非空值的列中
  • 尝试引用(外键)列为的表不存在。 .... 我的实际解决办法是:

我认为您应该创建
ExceptionResolverService
,并在此服务中定义应根据消息返回的异常,您在何处使用此服务,最好有一个
ExceptionHandler
,它还可以根据您可能返回的异常返回您想要的异常……我的问题是,对于上述所有三种情况,JPA都返回DataIntegrityViolationException。我需要定制一个用户友好的消息
catch (DataIntegrityViolationException e) {
        String message = ExceptionUtils.getMessage(e.getRootCause());
                log.error(message);
                if (message.contains("Violation of UNIQUE KEY constraint 'UK01_grupo_ramo'"))
                    throw new ValidacaoException(StringUtils.getMensagem("produto.exception.grupoRamo.nrGrupoRamoDuplicado", grupoRamo.getNrGrupoRamo()));