首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >H2数据库:预期的“所有,任何,一些,选择,从,与”

H2数据库:预期的“所有,任何,一些,选择,从,与”
EN

Stack Overflow用户
提问于 2018-05-14 11:28:01
回答 1查看 2K关注 0票数 3

我正在使用H2作为内存数据库来测试我们的应用程序。此查询为此sql查询提供错误expected "ALL, ANY, SOME, SELECT, FROM, WITH"

代码语言:javascript
复制
SELECT CF.*, ROWNUM CASHFLOW_INDEX
FROM ( SELECT * FROM
TB_CASHFLOWS CFW WHERE CFW.CASHFLOW_DATE >= :runDate AND
CFW.CASHFLOW_TYPE <> 'ISSUE' AND CFW.ISIN = :securityCode ORDER BY
CFW.CASHFLOW_DATE,CFW.CASHFLOW_TYPE ASC ) CF

在runDate位置,如下所示:

代码语言:javascript
复制
SELECT CF.*, ROWNUM CASHFLOW_INDEX
FROM ( SELECT * FROM
TB_CASHFLOWS CFW WHERE CFW.CASHFLOW_DATE >= :[*]RUNDATE AND
CFW.CASHFLOW_TYPE <> 'ISSUE' AND CFW.ISIN = :SECURITYCODE ORDER BY
CFW.CASHFLOW_DATE,CFW.CASHFLOW_TYPE ASC ) CF

但是,当参数被指定为'2017-02-28‘和'USD_TREASURY_28FEB’时,相同的查询在2017-02-28控制台中工作得很好。这个查询将由spring模板执行。这是H2参数传递方式的问题吗?

java代码如下所示:

代码语言:javascript
复制
Object[] cashflowQueryArgs = new Object[] {"2017-02-28","USD_TREASURY_28FEB" };

List<Cashflow> instrumentCashflows = getJdbcTemplate().query(
    cashflowsQuery, 
    cashflowQueryArgs,
    new BeanPropertyRowMapper<Cashflow>(Cashflow.class));
EN

回答 1

Stack Overflow用户

发布于 2018-05-14 11:49:00

幸运的是我找到了解决办法。我认为H2不支持命名参数。因此,我将命名的参数更改为普通问号,它起作用了!

代码语言:javascript
复制
SELECT CF.*, ROWNUM CASHFLOW_INDEX
FROM ( SELECT * FROM
TB_CASHFLOWS CFW WHERE CFW.CASHFLOW_DATE >= ? AND
CFW.CASHFLOW_TYPE <> 'ISSUE' AND CFW.ISIN = ? ORDER BY
CFW.CASHFLOW_DATE,CFW.CASHFLOW_TYPE ASC ) CF

更新了命名参数.

对于Oracle SQL,当将参数数组传递给查询方法时,spring模板对于普通参数和命名参数都很好。但是对于H2,我必须使用命名参数模板和SqlParameterSource。例子如下:

代码语言:javascript
复制
MapSqlParameterSource cashflowQueryParamSource = new MapSqlParameterSource();
cashflowQueryParamSource.addValue("runDate", cashflowQueryArgs[0]);
cashflowQueryParamSource.addValue("securityCode", cashflowQueryArgs[1]);

List<Cashflow> instrumentCashflows = namedJdbcTemplate.query(cashflowsQuery, cashflowQueryParamSource,
                new BeanPropertyRowMapper<Cashflow>(Cashflow.class));

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50329189

复制
相关文章

相似问题

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