首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用spring注释重新编号表的主索引?

如何使用spring注释重新编号表的主索引?
EN

Stack Overflow用户
提问于 2020-08-25 11:42:33
回答 2查看 103关注 0票数 0

我有一个使用MySQL数据库的spring引导项目。我有一个名为Employee的表,它有一个主索引(id)不是一个一个编号的(1、31、35、100等)。我希望他们被编号为(1,2,3,4)

还有类似的问题-- 这里

我得到了上面链接的SET @i=0; UPDATE Employee SET id=(@i:=@i+1);查询表单,如果直接在MySQL工作台上执行它,它就可以正常工作了。

我的问题是如何使用spring注释执行上述查询?

EmployeeRepository.java

代码语言:javascript
复制
public interface EmployeeRepositoryextends JpaRepository<Employee, Integer> {
    
    @Transactional
    @Modifying
    @Query(value = "SET @i=0; UPDATE Employee e SET e.id=(@i:=@i+1)", nativeQuery = true)
    public void renumberingId();    
}

EmployeeService.java

代码语言:javascript
复制
   @Service
   public class EmployeeService {

        @Autowired
        private EmployeeRepository repo;
        
        public void renumber() {
             repo.renumberingId();
        }
   }

当使用junit测试renumber()方法时,它给出了以下异常

代码语言:javascript
复制
org.hibernate.QueryException: Space is not allowed after parameter prefix ':' [SET @i=0; UPDATE Employee e SET e.id=(@i:=@i+1)];

请帮助如何使用SET @i=0; UPDATE Employee SET id=(@i:=@i+1);方法执行此查询renumberingId()

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-25 12:45:54

您的查询集SET @i=0; UPDATE Employee e SET e.id=(@i:=@i+1)是正确的。只需稍微修改一下--将变量初始化移到UPDATE:UPDATE Employee e, (SELECT @i:=0) var SET e.new_column =(@i:=@i+1); --您的查询在MySQL工作台中运行良好。问题是@Query()注释总是在:之后搜索参数

如果是这样,则可以使用枚举填充新列。

代码语言:javascript
复制
UPDATE Employee t0
  JOIN ( SELECT t1.id, COUNT(t2.id) cnt
         FROM Employee t1
         JOIN Employee t2 ON t1.id >= t2.id
         GROUP BY t1.id ) t3 ON t0.id = t3.id
SET t0.new_column = t3.cnt;

造型小提琴

票数 1
EN

Stack Overflow用户

发布于 2020-08-25 11:52:33

你不需要这么做,就是这样做的:

代码语言:javascript
复制
import javax.persistance.*;

@Entity   
public class Employee {   

  @Id   
  @GeneratedValue(strategy=GenerationType.IDENTITY)   
  public long id;

} 

它应该能自动完成你期望的事情

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63578094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档