【问题标题】:Equivalent of `set @variable = 0` in spring data jpa弹簧数据 jpa 中的 `set @variable = 0` 等价物
【发布时间】:2018-12-10 13:40:42
【问题描述】:

我正在尝试通过 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 带注释的方法中执行语句?

【问题讨论】:

    标签: java mysql hibernate jpa spring-data-jpa


    【解决方案1】:

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

    @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);
    

    如果你不想使用原生查询,你可以像这样传递参数:

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

    【讨论】:

    • 由于: 符号,您的第一个查询不会被接受:Space is not allowed after parameter prefix ':'
    猜你喜欢
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 2015-03-20
    • 2017-07-06
    • 2014-01-17
    相关资源
    最近更新 更多