Привет, ребята, у меня проблема с кодом. По какой-то причине, когда я пытаюсь изменить значение на false, это не отражается в моей базе данных SQL. Я отлаживал, и он настраивается через Java, но не переносится. Я работаю над классом службы уведомлений, и он устанавливает там значения true, без проблем, но мой метод PostMapping не работает. Я опубликую фрагмент кода ниже как для добавления полета, в котором я пытаюсь выполнить логику, так и для моей службы уведомлений.

@PostMapping("addflight")
String addflight(@ModelAttribute Flights flights, @SessionAttribute(required = false) String loggedInuser) {

    Accounts a = accountsRepository.findByEmail(loggedInuser).get();

    flightsRepository.saveAndFlush(flights);

    List<Flights> flightsList =  flightsRepository.findByAccountsOrderByDateofflightAsc(a);

    if(flightsList.size() != 0) {

        Flights lastFlight = flightsList.get(flightsList.size() - 1);
        LocalDate today = LocalDate.now();
        long days = 0;
        days = ChronoUnit.DAYS.between(lastFlight.getDateofflight(), today);
        if(days >= 46){
           a.setNotified(false);
        }

    }




    return "redirect:logbook";


}

############################ СНИППЕТ УВЕДОМЛЕНИЯ ################## #####################

 @Scheduled(fixedDelay = 4000000)
@Transactional
public void findFlights(){
    List<Accounts> list = accountsRepository.allpilots();
    List <Flights> accflight;
    long days = 0;
    long daysLeft = 0;

    for(Accounts a: list) {
        accflight = flightsRepository.findByAccountsOrderByDateofflightAsc(a);
        if (accflight.size() == 0) {
            System.out.println("No flights logged..");
            continue;
        }

        Flights lastFlight = accflight.get(accflight.size() - 1);

        days = ChronoUnit.DAYS.between(lastFlight.getDateofflight(), today);
        if (!a.getNotified()) {

            if (days > 60) {
                System.out.println("You are uncurrent! It has been " + days + " days since your last flight");

                try {
                    emailManager.sendMail(a.getEmail(), "You are uncurrent!", "Currency reminder");
                    a.setNotified(true);
                } catch (Exception e) {
                    System.out.println(e);
                    System.out.println("Email failed to send!");
                }
                continue;
            }

            
1
SandmanTT 12 Фев 2021 в 09:00

1 ответ

Лучший ответ

Насколько я понимаю: вы не обновляете свою учетную запись после установки для уведомления значения false. Вам необходимо сохранить изменения после установки с помощью чего-то вроде accountRepository.save(a);

1
sirroger 12 Фев 2021 в 14:04