[英]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.