2017-01-03 63 views
0

我正在用Spring Boot创建一个Web应用程序,它使用Spring Data JPA进行数据库访问。我创建了扩展JpaRepository如下信息库类:JPASpringDataRepository部分保存

public interface MyRepository extends JpaRepository <MyClass, Integer>{ 

} 

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

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

,在对应于MYCLASS数据库表中,有一个独特的约束其中一列。所以如果违反约束,就会抛出异常。但理想情况下,我希望save方法适用于那些不违反约束条件的记录。但遗憾的是,情况并非如此。因此,如果即使一条记录违反唯一约束,也不会将任何记录插入到数据库中。有没有解决方法?或者我需要手动检查每条记录,看它是否存在于数据库中,并只插入数据库中不存在的记录?

+0

你能显示你的'MyClass'实体吗 – Patrick

回答

0

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

简短的回答

是。

加长版

进行确切的方法取决于您的具体使用情况。我看到以下选项:

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

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

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

+0

谢谢,所以我会修改我的代码,在插入到数据库之前手动检查每条记录。 – Reshma