gpt4 book ai didi

java - 识别列表中已存在于数据库中的项目并将其删除

转载 作者:行者123 更新时间:2023-12-02 09:03:20 25 4
gpt4 key购买 nike

我有一个实体学生:ID,名称(字符串),...

我有另一个实体 ArchivedStudents 为:ID名称(字符串)、存档日期、...

我随机生成一个新学生列表,在将此列表保留到学生表中之前,我正在执行:我正在尝试从新学生列表中删除学生或 ArchivedStudents 中已存在姓名的学生。

目前,我正在传递学生姓名列表,并检查 ArchiveStudent 表中是否已存在,然后删除重复项。然后检查学生表中是否已存在该姓名,删除重复项,然后保留剩余的。

ArchiveStudents 和 Student 表中的记录数以百万为单位。

我想仔细检查这是否是最佳的或者是否有更好的方法。我正在使用 findAllByStudentIn 方法来识别重复项。

最佳答案

最好的方法是一次性访问数据库:

List<Student> students = generateRandomStudents();
List<String> namesInDb = (List<String>) entityManager.createQuery("select s.name from Student s where s.name in :names")
.setParameter("names", students.stream().map(Student::getName).collect(toList()))
.getResultList();
studentsRepository.saveAll(students.stream().filter(s -> !namesInDb.contains(s.getName())).collect(toList()));

关于java - 识别列表中已存在于数据库中的项目并将其删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60009072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com