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

问题描述 投票:0回答:1

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

public class Foo {

    @Past
    private Date date;
}

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

jpa bean-validation
1个回答
0
投票

如果为JPA激活了Bean验证,则默认行为是对持久性事件和更新前事件进行验证。验证的约束是默认组(默认)中的约束。

要激活删除前事件的验证,必须将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" />

然后,在删除事件上,将验证该约束。除非您也将它也分配给Default组,否则它不会在插入前或更新前进行验证。

如果您要确保未处理记录(例如,字段canBeDeletedtrue)或满足某些更复杂的条件,则不能删除该记录,这很有用。

© www.soinside.com 2019 - 2024. All rights reserved.