【问题标题】:updateQuery returns 1 but it's not getting reflected in db (spring data jpa)updateQuery 返回 1 但它没有反映在 db 中(spring data jpa)
【发布时间】:2018-11-28 02:15:57
【问题描述】:

但更新适用于以下代码 sn-p

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

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

【问题讨论】:

  • 并且在以下情况下它不起作用 /* @Modifying(clearAutomatically = true) @Query("update Department d set d.name =:name where d.id=:id") int update( @Param("name")String name,@Param("id")Long id);*/ /*departmentRepository.update("Jerry",300L);*/

标签: spring-data-jpa spring-data


【解决方案1】:

您的查询中有一个小错误。

您使用了 = 运算符,而不是应该使用 like 运算符


您也可以向 @NamedNativeQueries

寻求帮助

例子

DepartmentRepository.java

@Query(nativeQuery = true)
public List<Department> update(Long id);

Department.java

@SqlResultSetMapping(name="updateResult", columns = { @ColumnResult(name = "count")})

@NamedNativeQueries({
@NamedNativeQuery(
        name = "Department.update", 
        query = "UPDATE departmemnt SET name like 'rajiv' WHERE id = ?",
        resultSetMapping = "updateResult")
})

NativeQueries 比普通的 Hibernate 查询运行得更快

【讨论】:

    【解决方案2】:

    是的,这可能会有所帮助,如果是 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 2020-03-26
      • 1970-01-01
      • 2014-07-21
      相关资源
      最近更新 更多