首页 > 解决方案 > spring data JPA repository.save方法自动保存所有实体?

问题描述

在下面的代码中,为什么将 user1 保存到数据库中?repository.save 方法自动保存所有实体?</p>

@RestController
@RequestMapping("/test")
public class Test {

    @Autowired
    private UserRepository userRepository;

    @PostMapping("/test")
    public void test() {
        User user1 = userRepository.findById(1);
        user1.setPhone("1");

        User user2 = userRepository.findById(2);
        userRepository.save(user2);
    }
}

标签: javaspringdatabasejpaspring-data-jpa

解决方案


基本上,这取决于您的事务边界,如果您有一个活动的非只读事务并且您正在对托管(附加)实体进行一些修改,那么一旦提交事务,所有更改都将被保存/持久化。这是 JPA/Hibernate 的基本原理。如果不需要更改,则不应修改理想的附加实体。


推荐阅读