【发布时间】:2020-05-23 18:43:04
【问题描述】:
sql server 存储过程如下:
CREATE PROCEDURE SelectStaff @rankabbr varchar(14), @sex varchar(1)
AS
SELECT * FROM staff WHERE rankabbr = @rankabbr AND sex = @sex
我可以通过
在SSMS中成功运行它exec SelectStaff 'AEO', 'M';
但是在eclipse中,我使用hibernate来调用这个存储过程如下:
Session session2 = HibernateUtil.getCurrentSession();
org.hibernate.Query query = session2.createSQLQuery(" call SelectStaff(:rankabbr, :sex) ")
.setParameter("rankabbr","AEO")
.setParameter("sex", "M");
List<Object[]> results =query.list();
但错误返回如下:
23:30:57,708 警告 [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (默认任务 7)SQL 错误:102,SQLState:S0001 23:30:57,741 错误 [org.hibernate.engine.jdbc.spi.SqlExceptionHelper](默认任务 7) '@P0' 附近的语法不正确。
是什么原因? 我试图在调用中添加 { } 为
org.hibernate.Query query = session2.createSQLQuery("{ call SelectStaff(:rankabbr, :sex) }")
.setParameter("rankabbr","AEO")
.setParameter("sex", "M");
但错误是一样的。
我尝试用 SQLServer2012Dialect 替换 SQLServerDialect 但同样的错误。
【问题讨论】:
-
你用的是什么休眠版本?
-
休眠核心 5.0.6
标签: java sql sql-server hibernate stored-procedures