gpt4 book ai didi

java - 如何从存储过程获取多个结果集到spring boot端

转载 作者:行者123 更新时间:2023-12-05 07:30:26 24 4
gpt4 key购买 nike

我正在尝试从存储过程中获取多个结果到 spring 端,但不知何故我收到了这个错误:

org.hibernate.exception.SQLGrammarException: Error extracting results from CallableStatement
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:106)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111)
at org.hibernate.result.internal.OutputsImpl.convert(OutputsImpl.java:79)
at org.hibernate.result.internal.OutputsImpl.extractResults(OutputsImpl.java:139)
at org.hibernate.result.internal.OutputsImpl.extractCurrentResults(OutputsImpl.java:127)

我的商店程序就像,示例:

DELIMITER ;;

CREATE PROCEDURE `USER_LIST`()
BEGIN

SET @sqlSelect = 'SELECT * from profile WHERE is_email_verified = 0';

PREPARE stmt FROM @sqlSelect;
EXECUTE stmt;

SET @sqlSelect = 'SELECT * from user WHERE is_phone_verified = 0';

PREPARE stmt FROM @sqlSelect;
EXECUTE stmt;


END;;
DELIMITER ;

在 Spring 方面:

StoredProcedureQuery storedProcedure = entityManager.createStoredProcedureQuery("USER_LIST");

// Execute stored procedure
storedProcedure.execute();

List<Object[]> storedProcedureResults = storedProcedure.getResultList();

if(storedProcedure.hasMoreResults())
{
System.out.println("Print");
}

我在编写 storedProcedure.hasMoreResults() 的 if 条件下遇到该错误。

有没有办法在spring端同时获取结果列表?

请帮我解决这个问题。提前致谢。

最佳答案

Hibernate 只返回过程调用返回的第一个结果集。这意味着如果您将 Profile 表正确映射到其在 Spring 端的相应实体,您将只能检索 Profile 表的结果集。但是,如果您需要两个表的结果,请使用 union 连接两个表的结果集。然后您需要将它映射到一个实体,该实体必须在 spring 端具有两个表的所有列。

关于java - 如何从存储过程获取多个结果集到spring boot端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52329404/

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