JPA:bean验证对于预删除意味着什么?
JPA:bean验证对于预删除意味着什么JPA:bean验证对于预删除意味着什么?,jpa,bean-validation,Jpa,Bean Validation,JPA:bean验证对于预删除意味着什么 public class Foo { @Past private Date date; } 删除实体Foo时,如果日期有效(过去的日期),是否可以删除实体Foo?删除实体时,我们为什么要关心实体是否有效?如果为JPA激活Bean验证,则默认行为是对预持久化和预更新事件进行验证。验证的约束是默认组中的约束(默认) 要激活预删除事件的验证,必须将persistence.xml文件上的配置属性javax.persistence.valida
public class Foo {
@Past
private Date date;
}
删除实体Foo时,如果日期有效(过去的日期),是否可以删除实体Foo?删除实体时,我们为什么要关心实体是否有效?如果为JPA激活Bean验证,则默认行为是对预持久化和预更新事件进行验证。验证的约束是默认组中的约束(默认) 要激活预删除事件的验证,必须将persistence.xml文件上的配置属性
javax.persistence.validation.group.pre-remove
设置为要应用的验证组的值
例如,您可以创建组(这只是一个空接口):
并向要测试的字段添加约束:
public class Foo {
@Past(groups = {DeleteGroup.class})
private Date date;
}
并在persistence.xml上设置属性:
<property name="javax.persistence.validation.group.pre-remove" value="yourpackage.DeleteGroup" />
然后,在delete事件中,将验证该约束。除非您也将其分配给默认组,否则在预插入或预更新时不会对其进行验证
如果要确保记录未经处理(例如,字段canBeDeleted
为true
)或满足某些更复杂的条件,则此选项非常有用
<property name="javax.persistence.validation.group.pre-remove" value="yourpackage.DeleteGroup" />