Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA:在时间间隔后自动删除数据_Jpa_Triggers_Cron_H2_Resteasy - Fatal编程技术网

JPA:在时间间隔后自动删除数据

JPA:在时间间隔后自动删除数据,jpa,triggers,cron,h2,resteasy,Jpa,Triggers,Cron,H2,Resteasy,我有以下场景: 数据将由发件人在服务器上创建。 如果接收方在(例如)三天内不请求数据,则应删除数据,否则接收方将获得数据,并且在获得数据后,数据将被删除 换言之: 数据应该只存在有限的时间 我可以创建一个小jar文件,手动删除数据,可能是作为cron作业开始的。但我认为,这是一个非常糟糕的解决方案 是否可以使用JPA/JavaEE创建一个触发器,该触发器将在特定时间段后调用?据我所知,触发器只能在插入、更新、删除事件之后/之前调用。所以这不是一个解决方案 注意:我目前正在使用H2数据库和Wild

我有以下场景:

数据将由发件人在服务器上创建。 如果接收方在(例如)三天内不请求数据,则应删除数据,否则接收方将获得数据,并且在获得数据后,数据将被删除

换言之:

数据应该只存在有限的时间

我可以创建一个小jar文件,手动删除数据,可能是作为cron作业开始的。但我认为,这是一个非常糟糕的解决方案

是否可以使用JPA/JavaEE创建一个触发器,该触发器将在特定时间段后调用?据我所知,触发器只能在插入、更新、删除事件之后/之前调用。所以这不是一个解决方案

注意:我目前正在使用H2数据库和Wildfly来实现我的RESTeasy应用程序。但我将来可能会改变这一点,因此解决方案应该是自适应的

致以最良好的祝愿


Maik

Java EE为您带来了所需的一切。您可以定期执行清理作业:

@Singleton
public class Cleanup {

    @Schedule(minute = "*/5")
    public void clean() {
        // will be called every 5 minutes
    }

}
或者以编程方式创建一个将在一定时间后执行的:

@Singleton
public class Cleanup {

    @Resource
    TimerService timerService;

    public void deleteLater(long id) {
        String timerInfo = MyEntity.class.getName() + ':' + id;
        long timeout = 1000 * 60 * 5; // 5 minutes
        timerService.createTimer(timeout, timerInfo);
    }

    @Timeout
    public void handleTimeout(Timer timer) {
        Serializable timerInfo = timer.getInfo(); // the information you passed to the timer
    }

}
有关更多信息,请参阅