JpaRepository 查询参数未动态更新

Posted

技术标签:

【中文标题】JpaRepository 查询参数未动态更新【英文标题】:JpaRepository query parameters are not getting updated dynamically 【发布时间】: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)

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

【问题讨论】:

【参考方案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】:

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

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

【讨论】:

以上是关于JpaRepository 查询参数未动态更新的主要内容,如果未能解决你的问题,请参考以下文章

JpaRepository 计数查询 QuerySyntaxException 实体未映射

如何制作没有类型的 JpaRepository,或者只制作查询的 jpa repo?

带有可选参数的 JpaRepository

适用于 iOS 的 Firebase 动态链接 - 查询参数未从 iTunes Store 传递

spring jpa 带参数分页查询

查询参数更改时,路由未更新