首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在存储过程的本机查询中传递参数

如何在存储过程的本机查询中传递参数
EN

Stack Overflow用户
提问于 2017-12-07 11:00:57
回答 1查看 2.9K关注 0票数 0

我试图在本机查询中传递存储过程的参数,url是http://localhost:3025/bbr?BatteryBankID=1&fromDate=2017-01-10&toDate=2017-12-25

存储过程

代码语言:javascript
复制
Alter PROCEDURE [dbo].[Sample]
@BatteryBankID Int,
@fromDate DateTime,
@toDate DateTime

AS BEGIN

select 
bbr.StrVoltage,bbr.ChrgCurr
from BatteryBankReadings bbr
where bbr.BatteryBankID = @BatteryBankID 
and ReadTime between @fromDate and @toDate

END
GO

存储库

代码语言:javascript
复制
public interface SampleRepo extends CrudRepository<BatteryBankReadings, Integer> {


    @Query(value = "{call Sample :BatteryBankID, ':fromDate', ':toDate'}", nativeQuery = true)
    public List<BatteryBankReadings> samp(@Param("BatteryBankID") int BatteryBankID, @Param("fromDate") String fromDate,@Param("toDate") String toDate);
}

异常:

代码语言:javascript
复制
java.lang.IllegalArgumentException: Parameter with that name [fromDate] did not exist
    at org.hibernate.jpa.spi.BaseQueryImpl.findParameterRegistration(BaseQueryImpl.java:487) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.spi.BaseQueryImpl.setParameter(BaseQueryImpl.java:638) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:163) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:32) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.springframework.data.jpa.repository.query.ParameterBinder.bind(ParameterBinder.java:139) ~[spring-data-jpa-1.11.9.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.StringQueryParameterBinder.bind(StringQueryParameterBinder.java:61) ~[spring-data-jpa-1.11.9.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.ParameterBinder.bind(ParameterBinder.java:101) ~[spring-data-jpa-1.11.9.RELEASE.jar:na]
...........SO ON

请帮助我,谢谢预先-:)

EN

回答 1

Stack Overflow用户

发布于 2017-12-29 06:41:56

通过将参数保留在括号内,它可以工作,

代码语言:javascript
复制
public interface SampleRepo extends CrudRepository<BatteryBankReadings, Integer> {

        @Query(value = "{call Sample (:BatteryBankID, :fromDate, :toDate)}", nativeQuery = true)
        public List<BatteryBankReadings> samp(@Param("BatteryBankID") int BatteryBankID, @Param("fromDate") String fromDate,@Param("toDate") String toDate);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47693554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档