【问题标题】:hibernate bean validation - group validation sequencehibernate bean 验证 - 组验证序列
【发布时间】:2013-06-04 21:39:12
【问题描述】:

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

环境

带有内置 Hibernate-Validator 4.2 的 Glassfish 3.1.2。

【问题讨论】:

  • 目前配置看起来还不错。你的环境是什么?你如何使用 JPA?您的 JPA 提供程序是什么,您使用的是哪个版本的 Hibernate Validator?日志文件中有内容吗?您是否尝试过打开调试日志记录?
  • 我使用 glassfish 3.1.2 和内置休眠验证器 4.2。我只是使用默认的休眠核心。明天必须检查我的 jpa 提供者是什么以及日志记录。

标签: bean-validation hibernate-validator


【解决方案1】:
@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>

现在以正确的验证顺序产生结果。

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

【讨论】:

    猜你喜欢
    • 2012-09-15
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 2018-06-20
    相关资源
    最近更新 更多