java - SQLException : ResultSet is from UPDATE. 无数据。 Spring 数据

标签 java mysql spring spring-data-jpa

我为MySQL写了一个程序

CREATE DEFINER=`root`@`localhost` PROCEDURE `calculate_user_rank`()
BEGIN

DROP TABLE IF EXISTS `user_rank`;

CREATE TABLE `user_rank`
  AS (SELECT 
user.id, 
(SELECT COUNT(*)+1 FROM user_profile WHERE points>x.points) AS rank FROM 
user_profile x, user WHERE user.user_profile_id = x.id);

UPDATE user, user_rank SET user.rank = user_rank.rank WHERE user.id = user_rank.id;

END

此存储过程根据 user_profile 表中的 points 列计算用户排名,用数据创建一个新表 user_rank 并更新 userrank 列来自 user_rank 表。

当我从 MySQL Workbench 执行这个存储过程时,它工作正常。但是当我从 JpaRepository 调用它时:

@Transactional
@Query(nativeQuery = true, value = "CALL calculate_user_rank()")
void setUserRank();

它抛出一个异常:

Caused by: org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)
at org.hibernate.loader.Loader.doList(Loader.java:2620)
at org.hibernate.loader.Loader.doList(Loader.java:2600)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2429)
at org.hibernate.loader.Loader.list(Loader.java:2424)
...
Caused by: java.sql.SQLException: ResultSet is from UPDATE. No Data.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1084)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:973)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:918)
at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:6995)

程序有问题吗?

最佳答案

不是注解@Query,是@Procedure:

@Transactional
@Procedure(procedureName = "calculate_user_rank")
void setUserRank();

关于java - SQLException : ResultSet is from UPDATE. 无数据。 Spring 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43893296/

相关文章:

java - 无法将字符串传递给 indexOf 之后的方法

java - 尝试引用 Activity 中 fragment 的按钮

php mysql 更新放入空格

java - 读取UTF8文件并与String进行比较

java - @PatchMapping 的用例

Mysql 在字符串内部移动字符

MySQL block 选择/读取特定行

java - Spring 3 依赖注入(inject)和接口(interface)

java - 运行 spring-boot-maven-plugin 配置的 fat JAR 时出现 ClassNotFoundException

java - 如何设置 Spring/HIbernate JPA @Entiry 创建自动递增列(无 id)