gpt4 book ai didi

java - JPA 事件监听器

转载 作者:行者123 更新时间:2023-12-01 17:35:44 26 4
gpt4 key购买 nike

我需要构建一个应用程序,从数据库获取记录,等于某个值,如果它返回true,它将执行某些操作。我想知道 JPA 是否可以做类似的事情。

我有一个实体游戏:

@Data
@Entity
public class Game {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

public Game() {

}

@OneToOne
private Team teamBlue;

@OneToOne
private Team teamRed;

@DateTimeFormat(pattern = "HH:mm:ss yyyy-MM-dd")
private LocalDateTime localDateTime;
}

和返回 GameGameRepository:

@Repository
public interface GameRepository extends JpaRepository<Game, Long> {
@Override
Optional<Game> findById(Long aLong);
}

我想检查 Game 中的 LocalDateTime 值是否等于当前 LocalDateTime (LocalDateTime.now()) >) 如果是这样,请执行一些操作。当然,我可以使用 @Scheduled 并每 1 小时调用一次方法,但我想知道我所描述的是否可行。

简短摘要:

数据库中的

Game 实体,LocalDateTime = 2020-04-05 21:00:00

当前日期时间:2020-04-05 12:00:00(不执行任何操作,因为当前日期时间不等于游戏日期时间)

[9小时后]

数据库中的

Game 实体(不可变),LocalDateTime = 2020-04-05 21:00:00

当前日期时间:2020-04-05 21:00:00(当前日期时间与游戏的日期时间匹配,因此请执行一些操作(例如System.out.println(game )))。

最佳答案

我建议使用注释@Scheduled来安排作业,它将使用spring data jpa处理数据库数据。

@Scheduled(fixedRate=0 * * * *)
@Transactional
public void scheduleGameJob() {
Optional<Game> game = gameRepo.findById(1L);
if (game.isPresent()) {
LocalDateTime gameTime = game.get().getLocalDateTime();
if (gameTime.equals(LocalDateTime.now())) {
//do some action (for example System.out.println(game))).
}
}
}

关于java - JPA 事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61045722/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com