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?