My changes are not reflected in the database. I am trying to do changes to this TasksScheduler class. But no changes are reflected in the database. If I do:
System.out.println(bannerRepo.save(banner))
Then it is showing output. But no database changes happen. But if I try to save or delete outside scheduler class then changes happens. My TasksScheduler class:
package com.shopKpr.apps.medicine.repositories.admin.jpa;
import com.shopKpr.apps.medicine.model.admin.Banner;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
@Component
@Slf4j
@EnableScheduling
public class TasksScheduler {
private final BannerRepo bannerRepo;
public TasksScheduler( BannerRepo bannerRepo ) {
this.bannerRepo = bannerRepo;
}
//sec, min, hour
@Scheduled(cron = "0 14 3 * * *", zone = "Asia/Dacca") //Schedule at night 1 AM
public void schedulerTask() {
updateOfferState();
}
@Transactional
void updateOfferState() {
java.sql.Date today = new java.sql.Date(new java.util.Date().getTime());
List<Banner> bannerList = bannerRepo.findAll();
bannerList.parallelStream()
.filter(banner -> today.after(banner.getBannerStartDate()))
.forEach(banner -> {
banner.setEnabled(true);
bannerRepo.save(banner);
});
List<Banner> deletableBanners = bannerList.stream()
.filter(banner -> today.after(banner.getBannerEndDate()))
.collect(Collectors.toList());
deletableBanners.forEach(banner -> bannerRepo.deleteById(banner.getBannerId()));
}
}
My Banner class:
package com.shopKpr.apps.medicine.model.admin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Table
@Entity
public class Banner implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long bannerId;
@Column(nullable = false)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MMM dd, yyyy", timezone = "Asia/Dhaka")
private Date bannerStartDate;
@Column(nullable = false)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MMM dd, yyyy", timezone = "Asia/Dhaka")
private Date bannerEndDate;
@Column(nullable = false, columnDefinition = "TEXT")
private String bannerImage;
@Column(nullable = false)
private boolean enabled;
private String hyperLinkId;
}
Banner repository:
package com.shopKpr.apps.medicine.repositories.admin.jpa;
import com.shopKpr.apps.medicine.model.admin.Banner;
import org.springframework.data.jpa.repository.JpaRepository;
public interface BannerRepo extends JpaRepository<Banner, Long> {
}