【问题标题】:Delete an entity from database after a certain amount of time一定时间后从数据库中删除实体
【发布时间】:2019-06-22 18:30:31
【问题描述】:

我正在尝试编写一个项目,该项目采用不同标签的食物(代表不同种类的食物,如蔬菜、罐头等),并在不同食物的每个标签的给定到期时间后自动删除它们,通过。我尝试使用@Schedule EJB 来实现它,但我对它的理解感到困惑,因为我还是新手。 这是实体代码:

@Id
@GeneratedValue
@Column(name = "ID", nullable = false)
private Integer id;
@Column(name = "LABEL", nullable = false)
private Integer label;
@NotBlank
@Length(min = 2, max = 255)
@Column(name = "FOODNAME", nullable = false)
private String foodName;
@Column(name = "FOODNUMBER", nullable = false)
private Integer foodNumber;

及其类中的依赖项:

import org.hibernate.validator.constraints.NotBlank;
import javax.persistence.*;

以及@Schedule 的参考:

EJB @Schedule wait until method completed

提前感谢您的帮助。

【问题讨论】:

    标签: hibernate jersey dropwizard


    【解决方案1】:

    在表中添加一列expires。插入行时填写行过期的时间戳。

    现在您可以添加一个@Schedule 方法,该方法在表中搜索当前时间位于expires 列中的值之后的行。如果有,您可以删除它们。

    或者执行查询delete from Food where expires < :now,并将当前时间传递给参数now。然后数据库将执行查询和删除,但您无法记录删除了哪些行,这可能有助于调试问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      相关资源
      最近更新 更多