如何使用 JPA 1.0 关闭 Hibernate bean 验证?

2023-11-25

如何在 JPA 1.0 环境中使用 Hibernate 3.x 关闭 Bean 验证?

我用 persistence.xml 尝试了几件事:

<persistence-unit name="bbstats" transaction-type="RESOURCE_LOCAL">
  <properties>

    DB stuff

    <property name="javax.persistence.validation.mode" value="none" />
    <property name="hibernate.validator.autoregister_listeners" value="false" />
  </properties>
  <validation-mode>NONE</validation-mode>
</persistence-unit>

最后一个造成

org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'validation-mode'. One of '{"http://java.sun.com/xml/ns/persistence":jta-data-source, "http://java.sun.com/xml/ns/persistence":non-jta-data-source, "http://java.sun.com/xml/ns/persistence":mapping-file, "http://java.sun.com/xml/ns/persistence":jar-file, "http://java.sun.com/xml/ns/persistence":class, "http://java.sun.com/xml/ns/persistence":exclude-unlisted-classes, "http://java.sun.com/xml/ns/persistence":properties}' is expected.

但以上都不起作用。谁能告诉我如何在 JPA 1.0 实现上做到这一点?


The javax.persistence.validation.mode属性是 JPA 2.0 中的标准化属性之一。它不会期望它能够在 JPA 1.0 环境中工作。

实际上,假设您使用的是 Hibernate Validator 4,我的建议是从类路径中删除 JAR(我不确定 Hibernate Validator 3 中的配置设置是否仍然适用)。

如果您使用 Hibernate Validator 3,则应在插入或更新之前禁用生成的 DDL 和实体验证内的约束支持:

<property name="hibernate.validator.apply_to_ddl" value="false"/>
<property name="hibernate.validator.autoregister_listeners" value="false"/>

但是从类路径中删除 JAR 也很简单。

如果您遇到更具体的问题,请提供更具体的详细信息(包括 Hibernate Validator 的版本)。

参考

  • 第 4 章附加模块在 Hibernate 注解参考指南中
  • 休眠验证器 4.0.1.GA参考指南
  • 休眠验证器 3.1.0.GA参考指南
  • JPA 2.0 specification
    • 3.6.1.1 启用自动验证
    • 9.4.3 持久化单元属性
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 JPA 1.0 关闭 Hibernate bean 验证? 的相关文章

随机推荐