首页 > 解决方案 > updateQuery 返回 1 但它没有反映在 db 中(spring data jpa)

问题描述

但更新适用于以下代码片段

 Department department= departmentRepository.findOne(300L);
 department.setName("rajiv");
 departmentRepository.saveAndFlush(department);

但是这种情况是单色调映射,这可能是我最终会遇到 3 个查询的情况,其中包括 2 个选择查询和一个更新查询。为了优化我更新它的方式,我正在尝试使用这种没有得到更新的方法,因为 executeUpdate() 将受影响的行返回为 1 。

标签: spring-data-jpaspring-data

解决方案


是的,这可能会有所帮助,如果是spring数据,我找到了一种使其可更新的方法,并且因为他们坚持使用@transactional并扩展jparepository的功能,现在它只命中了一行语句

@Modifying(clearAutomatically = true)
@Transactional(readOnly=false)
@Query("update Department d set d.name =:name where d.id=:id")
int update(@Param("name")String name,@Param("id")Long id);

如果我选择使用 nativeQuery

@Modifying(clearAutomatically = true)
@Transactional(readOnly=false)
@Query(value="update Department d set d.name =:name where d.id=:id",nativeQuery=true)
int update(@Param("name")String name,@Param("id")Long id);

推荐阅读