У меня есть запрос на присоединение в моем приложении. Предполагается получить студентов, у которых еще нет созданной учетной записи. Я думал, что запрос работал, пока я не написал модульный тест, и там я заметил, что запрос возвращает тех же студентов, даже если учетная запись уже была создана.
Запрос
SELECT student_table.* FROM student student_table WHERE NOT EXISTS (SELECT app_relationship_table.student_id FROM relationship_table app_relationship_table WHERE student_table.student_id = app_relationship_table.student_id)
Что я имею в виду под приведенным выше запросом: укажите всех учеников, которые существуют в таблице учеников, но не присутствуют в таблице app_relationship_table, таким образом, чтобы я знал, какие ученики пропустили свой аккаунт.
Забавно то, что этот запрос работает так, как должен в MySql Workbench, но он не работает из моего кода Java. Он продолжает давать мне тех же учеников, у которых вначале не было учетной записи студента, и, таким образом, создавать дублированные данные в базе данных.
Я запускаю проект с локального хоста. Когда я в первый раз запускаю его, он работает нормально, но когда я перезагружаю страницу или выполняю запланированное задание, это приводит к путанице и дает мне тех же учеников, даже если учетная запись создана и таблица отношений обновлена новыми внешними ключами. Я использую CrudRepository
для сохранения данных
Создать код учетной записи студента:
@Override
public void createStudentAccount(List<Student> studentsWithoutStudentAccount) {
studentsWithoutStudentAccount.forEach(student->{
String username = "username";
String password = "password";
StudentAccount studentAccount = new StudentAccount (username, password, student);
save(studentAccount);
});
}
Кто-нибудь может мне помочь? Я не знаю, что мне здесь не хватает