我无法让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。
答案 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>
现在的结果是正确的验证顺序。
在此示例中,@UniqueNaturalId
在id
属性的内部约束之后得到验证。