下記の更新コードのQuartzタイマーサービスが必要です。例えば、6か月ごとに更新するQuartzタイマーサービスを作成するには?
//dataTypes are date only
List<User> allDbUsers=userRepository.findAll();
Date currDate=new Date();
final long DAY_IN_MILLIS = 1000 * 60 * 60 * 24;
for(User user:allDbUsers)
{
Date creationDate=user.getCreationDate();
String firstKey=user.getFirstKey();
Long diffInDays=(currDate.getTime()-creationDate.getTime())/DAY_IN_MILLIS;
if(diffInDays==180)
{
user.setSecondKey(firstKey);
user.setFirstKey("aH&#KK");
userRepository.saveAndFlush(user);
}
}
本当にスケジューラを使用してもよろしいですか?今から180日後にジョブが実行されるようにスケジュールを設定しても、アプリが1か月に1回、たとえば1か月間に再開されるとどうなるか推測してみてください。 – kryger
@kryger、彼のコードは実行スケジューラ用ではなく、job.excecuteメソッドのコードです(どのジョブが必要ですか)。スケジューラは、夜中にジョブが再び呼び出されると、サーバーが停止すると問題が発生するでしょう – HAYMbl4