Поведение по умолчанию, если для JPA активирована Bean Validation, заключается в проверке событий pre-persist и pre-update. И проверяемые ограничения - это те, которые входят в группу по умолчанию (Default).
Чтобы активировать проверку для события перед удалением, необходимо установить для свойства постоянства javax.persistence.validation.group.pre-remove
в файле постоянства. xml файла значение групп проверки, которые вы хотите применить.
Например, Вы можете создать группу (это просто пустой интерфейс):
public interface DeleteGroup {
}
и добавить ограничение в поле, которое вы хотите проверить:
public class Foo {
@Past(groups = {DeleteGroup.class})
private Date date;
}
И на постоянство. xml установите свойство:
<property name="javax.persistence.validation.group.pre-remove" value="yourpackage.DeleteGroup" />
Затем при событии удаления это ограничение будет проверено. Он не будет проверен при предварительной вставке или предварительном обновлении, если вы не назначите его также в группу по умолчанию.
Это полезно, если вы хотите быть уверены, что запись не может быть удалена, если она не не было обработано (например, поле canBeDeleted
равно true
) или соответствует некоторым более сложным критериям.