我刚刚开始将使用Hibernate 3.5.6.Final的应用程序升级到3.6.0.Final,并且已经有几个hickup。最后一个hickup我找不到解决方案。
3.6.0.Final似乎在通过Hibernate保存/更新对象时自动启用bean验证。这是非常糟糕的,因为我的一些测试不打扰设置所有属性 - 它们只是不需要。老实说,我没有意识到设置每个“描述”字段和无数其他字段只是为了遵守一些任意验证。
这将迫使我花费数小时在我的所有测试中制作有效的对象(我现在有超过1300个功能测试)。坦率地说,这将毫无意义,因为我确信所有验证都在MVC中进行,目前没有其他方法可以将数据导入数据库。
我也不希望通过两次验证我的bean来实现性能损失 - 一次在MVC中,然后在Hibernate中另一次。在我的情况下,这根本不需要。
我有办法解决这个问题吗?我使用的是Spring和常规的Hibernate映射文件,而不是JPA(我不喜欢所有的注释)。
答案 0 :(得分:23)
将以下内容添加到persistence.xml
:
<validation-mode>NONE</validation-mode>
或将该属性添加到hibernate.cfg.xml
:
<property name="javax.persistence.validation.mode">none</property>
有关更多选项,请参阅23.1.2. Configuration。
答案 1 :(得分:2)
将hibernate.validator.autoregister_listeners
属性设置为false
。您也可以将hibernate.validator.apply_to_ddl
设置为false。