经过一段时间后,从数据库中删除实体

时间:2019-01-29 15:22:01

标签: hibernate jersey dropwizard

我正在尝试编写一个项目,该项目采用带有不同标签的食物(代表不同种类的食物,例如蔬菜,罐头等),并在给定每种不同食物标签的有效时间后,将其自动删除。我尝试使用@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

感谢您的提前帮助。

1 个答案:

答案 0 :(得分:0)

在表中添加列expires。当您插入行时,在行到期时填写时间戳。

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

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