在mysql(JAVA hibernate)中调用存储过程时出错

我有一个奇怪的问题,我可以MySQL成功调用存储过程。但是使用 using 调用它会Java返回错误。


以下是我的控制器方法:


public double getBalance(String number) {

    double balance ;

    try {

        Query query = getSession().createSQLQuery("CALL getBalance(:string_number)").addEntity(Wallet.class)

                .setParameter("string_number", number);


        List result = query.list();


        if (result.size() == 0) {

            balance = -1.0;

        } else {

            balance = (double) result.get(0);

        }

    } catch (Exception ex) {

        throw ex;

    }

    return balance;

}

这是我的存储过程:


CREATE DEFINER=`root`@`localhost` PROCEDURE `getBalance`(IN string_number varchar(19))

BEGIN

select amount from wallet where number=string_number;

END

错误是:


SEVERE: Servlet.service() for servlet [dispatcher] in context with path 

[/DigitalWallet] threw exception [Request processing failed; nested 

exception is javax.persistence.PersistenceException: 

org.hibernate.exception.SQLGrammarException: could not execute query] with 

root cause

java.sql.SQLException: Column 'number' not found.

我有数字列,我可以成功调用 MySQL Workbench 中的存储过程。


ITMISS
浏览 240回答 1
1回答

汪汪一只猫

您应该改用该doWork()函数,您基本上可以使用 Lambda 表达式创建连接。你可以在这里看到一些例子
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python