簡體   English   中英

如何根據時間更新 Spring Boot 中的數據庫條目?

[英]How to update database entries in Spring Boot based on time?

我正在嘗試實現一個訂閱模型應用程序,該應用程序在啟動時檢查記錄是否過期(基於當前日期)並最終更新“啟用” boolean值。

該模型:

@Entity
@Table(name="users")
public class User {
    @Id
    @Column(name = "user_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotNull
    @Column(unique = true)
    private String name;

    @NotNull
    @DateTimeFormat(pattern = "dd/MM/yyyy")
    private LocalDate expiry_date;

    @NotNull
    private boolean enabled;

    //Constructor, getter, setters
}

在 UserService 類中,我實現了以下方法:

//Disable records if past expiration Date
public void updateRecordsBasedOnTime(){
    List<User> orgs = (List<User>) userRepository.findAll();
    LocalDate today = LocalDate.now();

    for (User usr: users) {
        if(today.isAfter(org.getExpiry_date())){
            org.setEnabled(false);
        }
    }
}

現在,問題是,在哪里調用這個方法合適? 起初我雖然在@Controller類中,因為已經使用了 userRepository 的實例,但是以下方法不起作用:

@PostLoad
private void updateStatus() {
    userService.updateRecordsBasedOnTime();
}

或者,我想實現一個每 12 小時通過記錄運行一次的 cron 方法:

@Scheduled(cron = "0 */12 * * *")
    public static void updateDatabase() {
}

但即使我成功地實現了這個方法,我也不會在啟動時更新數據。 任何人都可以對此有所了解,並可能為我提供更好的方法嗎?

我建議您使用觸發器。 借助觸發器,您不僅可以在啟動時執行任務,還可以定期執行任務。 您可以閱讀更多相關信息以及適合您特定需求的內容。

https://docs.spring.io/spring-framework/docs/4.0.x/spring-framework-reference/html/scheduling.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM