在java中,如何在给定的时间间隔内更新db中的值?

在java中,如何在给定的时间间隔内更新db中的值?,java,spring,hibernate,Java,Spring,Hibernate,我正在使用一个springboot项目,将mariaDB作为数据库服务器。我是Spring新手,我正在尝试在给定的时间间隔内更新数据库中的特定列 例如,我在项目中获得了以下实体: PlayerResources.java 知道我想要实现一个方法或事件吗?比如说,在一个每分钟更新500次金属值的服务类中。 增加金属价值的实际价值将通过一个公式提供,该公式除其他内容外,还包含玩家创建日期的信息。因此,金属值必须根据日期增加。如果玩家是在今天上午8:34:54 hh:mm:ss创建的,那么金属值的第一

我正在使用一个springboot项目,将mariaDB作为数据库服务器。我是Spring新手,我正在尝试在给定的时间间隔内更新数据库中的特定列

例如,我在项目中获得了以下实体:

PlayerResources.java

知道我想要实现一个方法或事件吗?比如说,在一个每分钟更新500次金属值的服务类中。 增加金属价值的实际价值将通过一个公式提供,该公式除其他内容外,还包含玩家创建日期的信息。因此,金属值必须根据日期增加。如果玩家是在今天上午8:34:54 hh:mm:ss创建的,那么金属值的第一次增加应该是在该时间之后的60秒-上午8:35:54

比如说:

伪服务

我知道伪服务毫无意义,但我不知道如何更好地对其进行清理,希望有人理解我要实现的目标

我已经在搜索其他类似的帖子了。但是找不到符合我问题的东西

我的主要目标是为策略游戏创建一个游戏逻辑,在该游戏中,玩家可以生成资源,并且这些资源应该每分钟或其他时间间隔(例如秒)在玩家帐户中更新。
稍后,我想通过WebSocket通过Spring REST将数据提供给前端。

您可以这样做:

@Scheduledcron=0***** 公共无效文件计划工作{ 对于PlayerResources pr:findAllPlayerResources{ //公关必须知道如何找到自己的球员 pr.setmetalcalculatenewmetalvalue宽恕playerpr; 更新程序 } }
你想要一个能找到所有玩家资源并每分钟或每隔一段时间更新其金属价值的计划程序吗?是的,所以所有玩家的所有资源都应该每分钟更新一次,但我正在考虑根据创建玩家的日期更新它们。但是,如果创建一个固定的时间间隔(数据库中的每个条目同时递增)要简单得多,那也没关系。但是,我必须记住,每个玩家资源都有自己的价值,每分钟都应该增加。因此,时间是固定的,但增加资源的价值必须是可变的。我想这正是我一直在寻找的!我在寻找解决方案时,脑子里并没有“时间表”这个词。多谢各位!
@Entity
@Table(name = "player_resources")
public class PlayerResources {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name = "metal")
    private BigDecimal metal;

    @Column(name = "plastic")
    private BigDecimal plastic;

    @Column(name = "information")
    private BigDecimal information;

    @Column(name = "technology")
    private BigDecimal technology;
...
public class PseudoService {

   private int levelOfProduction;
   private int someOtherValueToNote;
   private Timestamp dateOfCreation;
   private int timeIntervallInMinutes;


   public int amountToIncreaseMetalEvent(int defaultMetalIncreaseValue) {
      return repeat(valueToIncrease(defaultMetalIncreaseValue + levelOfProduction * someOtherValueToNote), timeInterval(dateOfCreation, timeIntervallInMinutes))
   }

   private int repeat(valueToIncrease, timeIntervall) {
      ...
   }
}