gpt4 book ai didi

mysql - JPA |循环遍历 ids 列表并更新 C

转载 作者:行者123 更新时间:2023-11-29 18:15:37 25 4
gpt4 key购买 nike

我遇到 JPA 查询问题。数据库是Postgres。

我想通过传递一些计数值来更新列值,这会将多行更新为 1。

例如:

表A

列:ID、等级、名称

对于sql查询输入是

起始排名:10

ID:[2,3,5]

输出:

它应该更新 id 2 行的排名 10、id 3 行的排名 11 和 id 5 行的排名 12。

请建议是通过JPA中的Java实现还是直接在sql中实现,如何实现?

附注:以前我使用准备好的语句并在循环中构建查询并将其分派(dispatch)执行。现在在JPA我不知道怎么走。

最佳答案

我得到了问题的答案:

我们需要将注释“@Transactional”放在服务类中,并运行从服务到更新存储库中存在的方法的循环,这将在java中创建实体对象,并在服务方法结束时将所有创建的实体推送到数据库中.

代码片段:

     @Transactional
void method(x){
//Given: Array id[] and rank
for ( int i=0;i<x.size();i++){
rank= rank+1
repository.update(id[i],rank);
}
}

存储库方法:

@Modifying(clearAutomatically = true) 
@Query(value = "UPDATE stories "
+ "SET rank = :rank, "
+ "WHERE id = :storyId ;" ,nativeQuery = true)
void update(@Param("storyId") Integer storyId, @Param("rank") int rank);
}

关于mysql - JPA |循环遍历 ids 列表并更新 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47053315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com