我刚刚开始将使用Hibernate 3.5.6.Final的应用程序升级到3.6.0.Final,并且已经进行了一些改进。我找不到最后的解决方法。
3.6.0.Final似乎在通过Hibernate保存/更新对象时自动打开Bean验证。这非常糟糕,因为我的某些测试不会费心设置所有属性-
只是不需要它们。老实说,我认为设置每个“描述”字段以及无数其他字段只是为了符合某些任意验证的意义。
这将迫使我花所有时间在所有测试中制作有效的对象(我现在有1300多个功能测试)。坦率地说,这毫无意义,因为我确信所有验证都在MVC中进行,并且目前没有其他方法可以将数据获取到数据库中。
我也不想通过两次验证我的bean来提高性能,一次是在MVC中,另一次是在Hibernate中。就我而言,这是不需要的。
有什么办法可以关闭此功能吗?我正在使用Spring和常规的Hibernate映射文件,而不是JPA(我不喜欢所有注释)。
将以下内容添加到persistence.xml
:
<validation-mode>NONE</validation-mode>
或将属性添加到hibernate.cfg.xml
:
<property name="javax.persistence.validation.mode">none</property>
见23.1.2。配置更多选项。
但是,当我执行以下测试时,不会引发验证异常: 当保存一个已经持久化的对象时,我如何使验证器触发器?最好是通过Java配置。 我的验证依赖项:
我们遇到了遗留代码的问题。对于“username”字段有一个验证集,验证其长度并确保至少包含一个字母: 我们面临的问题是,一些现有的遗留数据不适合这些验证,我试图找到一种方法,使这些验证对遗留数据(老用户)被忽略,而仍然适用于新创建的用户。 我正在考虑将验证移到方法(因此仅在实际更改时验证值),但这导致了一个异常:
我如何才能做到这一点,使我的A实体仅由B的外键持久化?也就是说,只有外键被插入到数据库中(因为B是一个主表,所以我不需要插入元素)。
问题内容: 如果我有3个相互连接的类。 room等级 person clas table_phone 我要在这里执行的是实现软删除,即在已删除项目的已删除列中插入值1,在现有项目中插入值0。另外,我还希望级联删除操作,因此,如果删除任何会议室,那么与该会议室相关的每个人和电话也将被删除(“已删除”列值设置为1)。我的问题是我该怎么做?有什么优雅的方法可以实现这些东西吗? 问题答案: 使用Hiber
我已经读到,使用hibernate的二级缓存,它可以通过减少数据/对象检索的数据库命中来提高应用程序的性能。 然而,hibernate如何确保二级缓存和数据库中的数据是最新的。 例如: 假设下面的类是entity并持久化到DB中。 现在,如果我们启用了二级缓存,我知道如果我们打开不同的会话,那么每个会话都将命中二级缓存以检索对象值。 现在,如果数据库中的数据发生更改(例如,对于id=1的行),例如
我正在学习hibernate和Spring Boot(也是Thymeleaf),遇到了以下问题: 环境:我有一个表单,处理创建和更新数据基于ID参数在GET方法,如果ID等于数据库中的一行,那么更新,否则保存。ID存储在隐藏的输入标记中,并与表单数据一起插入到实体对象中。然后将该对象发送给一个服务,该服务调用DAO来使用saveOrUpdate()方法保存或更新数据。 问题总结:在我的服务中,我有