Hey folks I’m having a problem with my code. For some reason when I try to change the value to false, it doesn’t reflect in my SQL Database. I debugged and it does get set via Java, but it doesn’t transfer over. I’m working on a notification service class and it sets the values on there to true no problem, but my PostMapping method, it doesn’t work. I will post a snippet of code below for both the add flight where I’m trying to do the logic and also my notification service.
@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";
}
#############################NOTIFICATION SNIPPET#########################################
@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;
}
Advertisement
Answer
As far I can see: You are not updating your account after setting the notification to false.
You need to persist your changes after setting it with something like accountRepository.save(a);