Удалить объект из базы данных через определенное время - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь написать проект, в котором используются продукты с разными этикетками (обозначающие различные виды продуктов питания, например овощи, консервы и т. Д.), И автоматически удаляю их по истечении определенного срока годности для каждой этикетки для разных продуктов.Я пытался реализовать это с помощью @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дождитесь завершения метода

заранее спасибо за любую помощь.

1 Ответ

0 голосов
/ 29 января 2019

Добавить столбец expires в таблицу.Заполните отметку времени, когда истекает срок действия строки при вставке строки.

Теперь вы можете добавить метод @Schedule, который ищет строки в таблице, где текущее время находится после значения в столбце expires.Если они есть, вы можете удалить их.

Или выполнить запрос delete from Food where expires < :now и передать текущее время для параметра now.Затем база данных выполнит запрос и удаление, но вы не сможете записать, какие строки были удалены, что может помочь при устранении неполадок.

...