hibernate bean验证 - 组验证序列

时间:2013-06-08 20:17:58

标签: bean-validation hibernate-validator

我无法让GroupSequence工作。我希望id属性上的内部约束在验证唯一约束之前首先进行验证。

在每个界面

实体

@UniqueNaturalId(groups = {Create.class, Update.class})
public abstract Entity
{
    @Null(groups = {PreCreate.class})
    @NotNull(groups = {PreUpdate.class, PreDelete.class })
    private Integer id;

    // other properties without groups
}

群组接口

@GroupSequence({PreUpdate.class, Update.class})
public interface PreUpdate {}

// PreCreate and PreDelete follow same structure

呼叫群组进行更新操作

<property name="javax.persistence.validation.group.pre-update">
    javax.validation.groups.Default, 
    package.PreUpdate
</property>

环境

Glassfish 3.1.2,内置Hibernate-Validator 4.2。

1 个答案:

答案 0 :(得分:0)

@GroupSequence({PreUpdate.class, Update.class})
public interface PreUpdate {}

此接口声明将导致循环组验证。

创建一个包含有序验证组序列的新组:

@GroupSequence({Default.class, PreUpdate.class, Update.class})
public interface UpdateOrdered {}

并将hibernate配置中的组替换为新组,如下所示:

<property name="javax.persistence.validation.group.pre-update">
        package.UpdateOrdered
</property>

现在的结果是正确的验证顺序。

在此示例中,@UniqueNaturalIdid属性的内部约束之后得到验证。