java - 相当于 spring data jpa 中的 `set @variable = 0`

标签 java mysql hibernate jpa spring-data-jpa

我正在尝试通过 spring data jpa 在 MySQL 上一次性执行以下查询。

    SET @i := 0;
    UPDATE tv_episode te SET te.display_episode_no= @i:=@i+1 WHERE te.tv_season_id=season ORDER BY broadcast_date;

我尝试在 StackOverflow 上寻找解决方案,但没有找到。

spring-data-jpa 中的 SET @i := 0; 相当于什么?有没有办法可以在 @Modifying@Query 带注释的方法中执行语句?

最佳答案

您可以通过将 nativeQuery = true 添加到 @Query 来运行 native 查询:

@Modifying
@Query(value = "SET @i := 0;\n" +
      "UPDATE tv_episode te SET te.display_episode_no= @i:=@i+1 WHERE te.tv_season_id = :season", nativeQuery = true)
int updateUserSetStatusForName(@Param("season") Integer season);

如果您不想使用 native 查询,您可以传递如下参数:

@Modifying
@Query("update TvEpisode te set te.displayEpisodeNo = :epiodeNo where te.tvSeasonId = :season")
int updateUserSetStatusForName(@Param("epiodeNo") Integer epiodeNo, 
  @Param("season") Integer season);

关于java - 相当于 spring data jpa 中的 `set @variable = 0`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53706912/

相关文章:

java - 如何返回枚举数组,出现此错误

java - 在本地测试 spring openshift 应用程序

MySQL SELECT 一个字符串,如果有匹配则左连接一个键

mysql - 子查询中的 GROUP BY 以获得准确的排名

MySQL查询未知错误

java - 我可以更改以及如何更改 Hibernate Envers 中的 REVTYPE 值吗?

java - MSSQL 中的 Hibernate 字符串到 char(32) 映射

java - Apache Commons 等于/哈希码生成器

java - 我已经编写了一个线程,但如何将其添加到我的 main 方法中?

java - getter 的良好命名约定