【问题标题】:JAXB, MOXy, JSR-303, JPA - disable JSR-303 validations after unmarshalling?JAXB、MOXy、JSR-303、JPA - 解组后禁用 JSR-303 验证?
【发布时间】:2014-10-22 19:16:32
【问题描述】:

我通过外部服务接收到一条 XML 消息,我可以使用 MOXy 作为我的 JAXB 提供程序将其解组为 POJO。我目前能够使用 JPA (Hibernate) 将对象持久化到数据库中,当遇到无效数据时,JSR-303 验证会按预期工作。

我的挑战是,在持久化之前,我想向 POJO 添加两个字段 - 提交者的用户 ID 和收到记录的日期。添加属性工作正常,一切都按预期持续存在。但是,一旦我将 @NotNull 约束添加到两个附加字段(以保护对同一表的写入免受其他进程的影响),解组就会失败并出现以下错误:

在未编组的 bean 上违反了约束:

有没有办法在解组后禁用 JSR-303 检查?我必须在不久的将来创建大量这样的对象,并且对于需要持久化的每条传入消息都有 2 个不同的对象将不是最佳的。

另外,还有其他与审计无关的信息需要稍后注入,因此添加不同的审计解决方案并没有真正的帮助。

提前感谢所有帮助!

【问题讨论】:

    标签: jaxb bean-validation moxy


    【解决方案1】:

    在 MOXy 中关闭 BV:

     Map<String, BeanValidationMode> props = new HashMap<>();
     props.put(JAXBContextProperties.BEAN_VALIDATION_MODE, BeanValidationMode.NONE);
     Class[] classes = new Class[] { Customer.class };
     JAXBContext jaxbContext = JAXBContext.newInstance(classes, props);
    

    https://wiki.eclipse.org/EclipseLink/Examples/MOXy/BVinJAXB/GettingStarted

    【讨论】:

      猜你喜欢
      • 2015-01-10
      • 2011-08-15
      • 2011-10-30
      • 2018-08-15
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      相关资源
      最近更新 更多