JPASpringDataRepository部分保存

时间:2017-01-03 09:35:42

标签: database spring-boot spring-data

我正在使用Spring Boot创建一个Web应用程序,它使用Spring Data JPA进行数据库访问。我创建了一个Repository类,它扩展了JpaRepository,如下所示:

public interface MyRepository extends JpaRepository <MyClass, Integer>{

}

我从我的控制器调用此方法如下:

myRepo.save(myclassList); //myclassList is a List<MyClass>

在与myclass对应的数据库表中,其中一列有唯一约束。因此,如果违反约束,则抛出异常。但理想情况下,我希望save方法适用于那些不违反约束的记录。然而遗憾的是情况并非如此。因此,如果甚至一条记录违反了唯一约束,则不会将任何记录插入到数据库中。这有什么解决方法吗?或者我是否需要手动检查每条记录以查看它是否存在于数据库中并且只插入数据库中不存在的记录?

1 个答案:

答案 0 :(得分:0)

  

我是否需要手动检查每条记录,看它是否存在于数据库中,只插入数据库中不存在的记录?

简短回答

更长的版本

准确的进行方式取决于您的具体用例。我看到以下选项:

  1. 在保存之前,请确保您的数据有效。这可能是默认方法

  2. 将每个实体保存在单独的事务中,这样回滚只会将更改回滚到该一个实体。

  3. 尝试将所有内容保存在一个事务中。如果它无法回退到1.或2.这是一个更多的编码,但如果违反约束是一种罕见的事件,它可能具有最佳性能。