【问题标题】:JPA: what does bean validation mean for pre-remove?JPA:bean 验证对预删除意味着什么?
【发布时间】:2020-03-04 01:42:45
【问题描述】:

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

public class Foo {

    @Past
    private Date date;
}

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

【问题讨论】:

    标签: jpa bean-validation


    【解决方案1】:

    如果为 JPA 激活 Bean Validation,则默认行为是验证 pre-persist 和 pre-update 事件。验证的约束是默认组中的约束(默认)。

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

    然后,在删除事件中,该约束将被验证。除非您也将其分配给默认组,否则不会在预插入或预更新时对其进行验证。

    如果您想确保一条记录在未处理(例如,canBeDeleted 字段为true)或满足一些更复杂的条件时不能被删除,这将非常有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      • 2011-01-02
      • 1970-01-01
      • 2011-12-28
      • 2020-10-12
      • 2011-06-11
      • 2010-10-02
      相关资源
      最近更新 更多