JAXB、MOXy、JSR-303、JPA - 解码后禁用 JSR-303 验证?

标签 jaxb bean-validation moxy

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

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

未编码的 bean 违反了约束:

有没有办法在解码后禁用 JSR-303 检查?我必须在不久的将来创建大量这样的对象,并且为每条需要保留的传入消息设置 2 个不同的对象将不是最佳选择。

此外 - 稍后将必须注入(inject)其他非审计相关信息,因此添加不同的审计解决方案并没有多大帮助。

在此先感谢您的所有帮助!

最佳答案

在 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

关于JAXB、MOXy、JSR-303、JPA - 解码后禁用 JSR-303 验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26515339/

相关文章:

java - JAXB 构建不正确的 XML

java - 将 JSR-303 验证错误转换为 Spring 的 BindingResult

java - JSR-303 Bean 验证和 Primefaces CSV 中的不区分大小写的匹配

java - 将 XML 映射到具有相同标签名称但不同属性的对象

java - 如何将大写字母的 Sharepoint JSON 对象映射到 MOXy 类?

java - 如何在 JAX-WS 中控制 JAXBContext?

java - 如何实现 xml 可保存/可加载类?

java - 如何将 MOXy JAXB 指定为 Apache CXF 2.2.6 的 Apache CXF 实现

java - Spring 批处理 Jaxb2Marshaller : different name of class and xml attribute

基于 Spring session 的 javax 约束验证