0

我无法让我的 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。

4

1 回答 1

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

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

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

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

并用新组替换休眠配置中的组,如下所示:

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

现在以正确的验证顺序得到结果。

在这个例子中是在对属性@UniqueNaturalId进行内部约束之后进行验证的。id

于 2013-06-29T18:23:13.363 回答