【问题标题】:Disabling Hibernate Validation on save/update with Hibernate 3.6.0.Final使用 Hibernate 3.6.0.Final 在保存/更新时禁用 Hibernate 验证
【发布时间】:2011-05-21 19:30:43
【问题描述】:

我刚开始将使用 Hibernate 3.5.6.Final 的应用程序升级到 3.6.0.Final,并且出现了一些问题。我找不到解决方案的最后一个问题。

3.6.0.Final 似乎在通过 Hibernate 保存/更新对象时自动打开 bean 验证。这非常糟糕,因为我的一些测试不需要设置所有属性——它们只是不需要。老实说,我没有看到设置每个“描述”字段和无数其他字段只是为了遵守一些任意验证的意义。

这将迫使我在所有测试中花费数小时制作有效对象(我现在有超过 1300 个功能测试)。坦率地说,这毫无意义,因为我确信所有验证都在 MVC 中进行,目前没有其他方法可以将数据导入数据库。

我也不希望通过两次验证我的 bean 来降低性能 - 一次在 MVC 中,另一次在 Hibernate 中。在我的情况下不需要它。

有什么方法可以关闭它吗?我使用的是 Spring 和常规 Hibernate 映射文件,而不是 JPA(我不喜欢所有注释)。

【问题讨论】:

    标签: hibernate validation


    【解决方案1】:

    将以下内容添加到persistence.xml

    <validation-mode>NONE</validation-mode>
    

    或将属性添加到hibernate.cfg.xml:

    <property name="javax.persistence.validation.mode">none</property>
    

    更多选项请参见23.1.2. Configuration

    【讨论】:

    • 春天有什么办法可以做到吗?我没有使用 JPA,只是常规的休眠映射 xml 文件。
    • +1。我仍然会保留我的答案,它应该适用于旧版本的休眠。
    • 有什么方法可以在每次保存的基础上做到这一点?
    • 对于 Spring,我在 &lt;property name="hibernateProperties"&gt; 中使用了 &lt;prop key="javax.persistence.validation.mode"&gt;none&lt;/prop&gt;,这似乎有效。
    【解决方案2】:

    hibernate.validator.autoregister_listeners 属性设置为false。您也可以将hibernate.validator.apply_to_ddl 设置为 false。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-11
      • 2013-06-17
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 2021-07-03
      相关资源
      最近更新 更多