我正在尝试从存储过程中获取多个结果到 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/