我收到一个Post
请求,该请求会给我一个List<PersonApi>
对象
class PersonApi {
private String name;
private String age;
private String pincode ;
}
我有一个名为Person
的实体对象
@Entity
@Table(name = "person_master")
public class Person{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@Column(name = "name")
String name;
@Column(name = "age")
String age;
@Column(name = "pincode ")
String pincode ;
}
我在Post请求中的记录看起来像这样(下面数据的伪代码表示)
[
"Arun","33","09876gh"
"James","34","8765468"
]
我需要使用Spring JPA进行批量验证。给定{{1}中的所有条目的条件下,赋予List<PersonApi>
并获得True
或False
}}对象列表应该在数据库中。
如何执行此操作?
答案 0 :(得分:2)
伪代码:
List<PersonApi> personsApiList = ...; //from request
List<Person> result = personRepository.findAll();
在服务类中,您可以访问存储库以获取所有数据库实体,并检查您的personapi列表是否完整。
boolean allEntriesExist = result.stream().allMatch(person -> personsApiList.contains(createPersonApiFromPerson(person)));
public PersonApi createPersonApiFromPerson(Person person){
return new PersonApi(person.getName(), person.getAge(), person.getPincode());
}
答案 1 :(得分:0)
所选答案不是正确答案。 (并非总是正确的) 您正在选择整个数据库以检查是否存在。除非您的用例非常特殊(即表非常小),否则会降低性能。
正确的方法可能是从为每个人员发布repository.existsById(id)开始,如果您从不删除人员,甚至可以在其之上应用一些缓存。