java - Spring Hibernate 保存/提交事务而不调用 Save 方法

标签 java spring hibernate

我正在使用 JPA 的 Spring 和 Hibernate 实现。 在我的服务类中,我有一个方法如下。

@Override
public String myMethod(String arg) throws Exception {
 MyObject obj = fetchFromDB();

 // Some code to update object.

 if(isSuccess){
    myObject.saveAndFlush();
 }
 else{
    return failure;
 }
}

由于某种原因,即使我没有保存对象,更改也会保存到数据库中。

最佳答案

当您从数据库获取对象时,它附加到 hibernate session 。您对附加对象所做的每个更改都会保留,无需在对象上显式调用 save

引自the documentation

Hibernate will detect any changes made to an object in persistent state and synchronize the state with the database when the unit of work completes.

就您而言,如果可能的话,您应该对 isSuccess block 内的对象进行所有更新。

关于java - Spring Hibernate 保存/提交事务而不调用 Save 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28101263/

相关文章:

java - Java 类加载阶段符号引用如何解析为直接引用?

spring - 使用 Reactive MongoDB 进行流式传输并且正在取消耗时操作

java - 即使我们目前不打算迁移到 Java 8+,我们也可以升级到 Spring 5 吗?

java - 如何从 3.5.2 发行版重建 hibernate3.jar?

mysql - Spring Hibernate @Data 更新与原始 UPDATE 查询 : Optimistic Lock Exception despite @Transactional?

java - 为来自父类(super class)的字段限定 Spring 依赖注入(inject)

java - 尝试从数据库中检索值时出现 SQLite 数据库错误

java - 延迟初始化集合失败,从 org.hibernate.classic.Lifecycle 的 onload 方法访问时没有 session 或 session 被关闭

java - 为什么透明图像会影响java性能?

java - Spring Autowiring 调用错误的构造函数