我创建了2个实体。现在,当我在后端检索我的实体时,我会验证一些事情,但是当我的后端将那些实体返回到我的前端时,hibernate尝试自动更新数据库。
我实际上没有在后端代码中运行任何更新(我认为这是因为我在执行逻辑并删除一些应返回到前端的属性时更改了实体中的某些数据)。
我如何告诉hibernate在显式运行.save或.update之前不更新任何内容?
您已经在评论中看到了片段,但让我将其汇总为一个答案:
我认为这是因为我在执行逻辑时更改了实体中的某些数据
这种解释是正确的。
如果您通过JPA加载实体,则该实体将附加到会话中,一旦关闭会话/提交事务,对它的所有更改都会被跟踪并写入数据库。
为了避免这种情况,您需要从会话中删除实体。您可以通过
将实体与持久性上下文分离:https : //docs.oracle.com/javaee/7/api/javax/persistence/EntityManager.html#detach-java.lang.Object-
在进行操作之前,请关闭EntityManager /事务。这基本上意味着您对最外部方法之外的实体进行了注释@Transactional
请注意,在这两种情况下,延迟加载都不再起作用,因此,在分离实体之前,必须确保已加载了所需的所有内容。
问题内容: 我试着通过网络搜索,但是徒劳。有没有一种方法可以使用hibernate来执行幂等更新。 一种用例是使用HTTP PUT通过REST API更新数据库中的特定字段。因此,例如,如果我有一个包含列: _ Id,Name,Phone,UpdateDate*_ 的数据库 _ ,_ 并且我多次用相同的值更新(特定 ID的 ) Phone ( 电话) 字段,那么只有我的第一个操作必须更新 Phon
问题内容: 我在Java J2EE Web应用程序中使用Hibernate 3.5.2和Spring Core 3.0.1。当单独的用户同时更新同一记录时,我得到了StaleObjectStateExcpetion。事务由javax.persistence.EntityManager管理。这是我创建问题的步骤。 User1登录到应用程序 User2登录到应用程序 用户1开始编辑记录A 用户2开始编
问题内容: 是否可以限制使用Hibernate / HQL更新的行数?例如: 我一直在使用Google搜索,以便尝试在内存数据库中使用HSQL DB以及在部署中使用MySql进行一些单元测试。MySql在Update语句上支持Limit子句,但HSQL不支持,在HSQL中使用内部选择进行UPDATE需要按顺序排序,这似乎是个坏主意。有没有办法限制更新中的行数? 谢谢。 问题答案: 在Hiberna
问题内容: 在我的Java应用程序中,我正在使用hibernate .hbm文件访问数据库。是否可以更新表中的主键“ id”列;我的.hbm文件中的“ id”列如下所示: 问题答案: 尝试这个: 或只使用sql:
问题内容: 我知道,如果没有其他具有相同ID和类型的对象附加到会话中,则使用update会将分离的对象置于持久状态。合并不关心状态。如果会话中不存在相同类型的持久对象,或者它使用新对象的值更新旧对象,则它只会返回该对象。我的问题是关于数据库命中的问题。方法“更新”和“合并”是否立即击中数据库?或关闭会话后,数据库中的更改显而易见。 编辑:如果我们通过save方法在持久化实例上调用update方法会
问题内容: 我正在尝试运行一个更新查询,它将在sql中看起来像这样: 我正在尝试使用 Criteria 这样重新创建查询: 这行不通,因为满足该条件的行很多,我的独特结果是我猜这里的问题。如何将其转换为符合条件的所有行的更新。我不想使用HQL查询,而是使用Criteria来执行。 问题答案: 始终建议执行批量操作非常接近数据库,除非需要,否则我们不需要在会话中保留更新的对象,因此,在执行批量操作时
问题内容: 我正在尝试使用Hibernate插入或更新大数据。我有一个包含350k对象的列表,当我使用Hibernate时,要花费数小时才能插入所有数据。 我正在使用以下代码进行此操作。我的开发环境是JDK1.4和Oracle数据库。 我正在使用批处理更新,还设置了属性50,但这并没有帮助。 我的对象与另一个对象具有一对一的关系,因此在这种情况下使用StatelessSession可能会出现问题。
问题内容: 是否可以在生产环境中运行配置有更新数据库架构的Hibernate应用程序? 问题答案: 不,这是不安全的。 尽管Hibernate团队做出了最大的努力,但是您根本不能依靠 生产中的 自动更新。编写自己的补丁程序,使用DBA对其进行审核,对其进行测试,然后手动应用它们。 从理论上讲,如果 hbm2ddl更新 在开发中起作用,那么它也应在生产中起作用。但实际上,并非总是如此。 即使工作正常