java - 为什么在春季调度程序中更新时更改未反映在数据库中?
问题描述
我的更改未反映在数据库中。我正在尝试对此 TasksScheduler 类进行更改。但没有任何变化反映在数据库中。如果我做:
System.out.println(bannerRepo.save(banner))
然后它显示输出。但是没有发生数据库更改。但是,如果我尝试保存或删除外部调度程序类,则会发生更改。我的 TasksScheduler 类:
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()));
}
}
我的横幅类:
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;
}
横幅存储库:
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> {
}
解决方案
推荐阅读
- php - 使用 PHP 和 AJAX 的链表
- sql - 如何在 SQL 查询中将多条记录分组为一条
- barcode-scanner - 如何在 mc67 上对 datawedge 进行编程以在扫描条码后前进到下一个屏幕
- oozie-coordinator - Oozie 工作不在工作列表中
- ios - Ionic 3:警告:清理不安全的 URL 值
- internet-explorer - 如果我没有安装 MS Edge 网络浏览器,如何在其上测试我的网站?
- javascript - JavaScript 如何知道等待内部承诺的结果?
- sql - 在 Postgres 中使用自引用外键删除
- java - Java 流列表处理顺序
- jquery - 更改 CSS 过渡的顺序