JPA:bean 验证对预删除意味着什么?

JPA: what does bean validation mean for pre-remove?

JPA:bean 验证对于预删除意味着什么?

public class Foo {

    @Past
    private Date date;
}

删除实体Foo时,如果日期有效(过去的日期),实体Foo可以删除还是不能删除?删除实体时,为什么要关心实体是否有效?

如果为 JPA 激活了 Bean 验证,则默认行为是在保留前和更新前验证 events.And 验证的约束是默认组(默认)中的约束。

要激活删除前事件的验证,您必须将 persistence.xml 文件上的配置 属性 javax.persistence.validation.group.pre-remove 设置为您想要的验证组的值申请。

例如,您可以创建组(这只是一个空界面):

public interface DeleteGroup {
}

并对要测试的字段添加约束:

public class Foo {

    @Past(groups = {DeleteGroup.class})
    private Date date;
}

并在 persistence.xml 上设置 属性:

<property name="javax.persistence.validation.group.pre-remove" value="yourpackage.DeleteGroup" />

然后,在删除事件中,将验证该约束。它不会在插入前或更新前验证,除非您也将它分配给默认组。

如果你想确保一条记录在没有被处理的情况下不能被删除(例如字段 canBeDeletedtrue),或者满足一些更复杂的标准。