Jpa对象不调用更新方法实现自动更新

发布时间 2024-01-03 17:34:21作者: qqq9527

概述

发现了个问题,使用jpa对实体进行操作时,即使未调用保存或更新方法,对于实体的相关设值也会自动更新到数据库中。

一、问题复现

 

实现类中

@Service
public class VrBoxService {
	
	@Autowired
	private VrBoxRepository vrBoxRepository;

	
	@Transactional //事务注解,添加之后jpa会自动把实体的相关变更持久化到数据库中 
   @Commit // 此注解是为了在单元测试中不让事务进行回滚,从而可以在数据库中看到数据的明显变化
public BaseResponse unbind(VrBoxUnBindReqVo reqVo) { BaseResponse response = new BaseResponse(); VrBox vrBox = vrBoxRepository.getBysubjectAndBox(subject, box); if (vrBox == null) { throw new RuntimeException("当前子账户还未绑定"); } vrBox.setStatus("1"); vrBox.setModifyDateTime(LocalDateTime.now()); return response; } }
public interface VrBoxRepository extends JpaRepository<VrBox, UUID>,JpaSpecificationExecutor<VrBox> {

    VrBox getBysubjectAndBox(Subject subject,Box box);
    
}

调用

unbind后会查询并更新数据
执行后日志输出: