【问题标题】:JpaRepository query parameters are not getting updated dynamicallyJpaRepository 查询参数未动态更新
【发布时间】:2022-01-10 17:27:03
【问题描述】:

查询参数未更新 -

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.erecruitment.app.model.user;
@Repository
public interface updatePassword extends JpaRepository<user, Long>{
        
    @Transactional
    @Modifying
    @Query(value="UPDATE user SET password=?1 WHERE username=?2",nativeQuery=true)
    int updtPassword(String password,String username);  
}

执行结果是 -

Hibernate: 
    UPDATE
        user 
    SET
        password=? 
    WHERE
        username=?

我尝试硬编码参数,例如 -

@Query(value="UPDATE user SET password='ee' WHERE username='w@g.com'",nativeQuery=true)

而且,它奏效了。但是,第一个没有奏效。请你花点时间帮助我,因为我不明白我哪里错了?

【问题讨论】:

    标签: spring spring-boot jpa spring-data-jpa jpa-2.0


    【解决方案1】:

    请尝试:

    @Transactional
    @Modifying
    @Query(value="UPDATE user SET password= :password WHERE username= :username ",nativeQuery=true)
    int updtPassword(@Param("password") String password,@Param("username") String username);  
    

    要导入的参数类:

    import org.springframework.data.repository.query.Param;
    

    【讨论】:

    • 这个解决方案似乎很有希望。感谢您的回复。但是,我已经解决了这个问题。实际上,从服务中,我首先将用户名而不是密码传递给 updtPassword 方法。当我纠正它时,它起作用了。
    【解决方案2】:

    上面的代码看起来不错,可以在我的本地机器上运行。

    您能否添加有关您的问题的更多详细信息?

    【讨论】:

      猜你喜欢
      • 2019-11-11
      • 2017-04-15
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 2018-04-08
      • 2018-12-15
      • 2021-08-05
      • 2023-03-16
      相关资源
      最近更新 更多