一定时间后从数据库中删除实体

Delete an entity from database after a certain amount of time

我正在尝试编写一个项目,该项目采用不同标签的食物(代表不同种类的食物,如蔬菜、罐头等),并在不同食物的每个标签的给定到期时间后自动删除它们,通过.我尝试使用 @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;

及其中的依赖项 class:

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

以及@Schedule 的参考:

EJB @Schedule wait until method completed

提前感谢您的帮助。

向 table 添加一列 expires。插入行时填写行过期时间戳。

现在您可以添加一个 @Schedule 方法来搜索 table 中的行,其中当前时间在列 expires 中的值之后。有的话可以删除。

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