gpt4 book ai didi

java - 查询未在 HSQLDB 中运行

转载 作者:行者123 更新时间:2023-11-30 09:32:55 25 4
gpt4 key购买 nike

我正在使用 HSQLDB 进行 JUNIT 测试。

有一个查询不是在 HSQL 中执行,而是在 Sybase 驱动程序中执行。我正在使用 Spring JDBC 运行 HSQLDB 的查询和 hsqldb.1.8.1.jar 文件。

代码如下:

public static final String ORG_CODE_QUERY = "SELECT ORG_CODE = org.name " +
" FROM " + ORGANIZATION + " org " +
" WHERE org.id = ? " +
" AND org.industry = ? ";


public List<String> getOrgCode(RequestPayload rqstPayload) {
return getJdbcTemplate().query(ORG_CODE_QUERY, new Object[]{rqstPayload.getId(),rqstPayload.getIndustry()}, new ResultSetExtractor<List<String>>() {
public List<String> extractData(ResultSet rs) throws SQLException {
List<String> list = new ArrayList<String>();
while(rs.next()) {
list.add(rs.getString("ORG_CODE"));
}
return list;
}
});
}

Spring 配置:

 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="org.hsqldb.jdbcDriver" />
<property name="jdbcUrl" value="jdbc:hsqldb:mem:test" />
<property name="user" value="sa" />
<property name="password" value="" />
<property name="minPoolSize" value="5" />
<property name="maxPoolSize" value="10" />
</bean>

当 Sybase 数据源传递给 JDBCTemplate 时,此查询运行完美,但在传递 HSQLDB 数据源时失败。

如果我如下更改字符串,它也会在 HSQL 中运行

public static final String ORG_CODE_QUERY = "SELECT org.name as ORG_CODE" +
" FROM " + ORGANIZATION + " org " +
" WHERE org.id = ? " +
" AND org.industry = ? ";

遗憾的是无法更改生产代码。

我收到以下错误:

Caused by: java.sql.SQLException: Column not found: ORG_CODE in statement 

如果这个问题有解决办法,请告诉我。

谢谢阿维尼什

最佳答案

HSQL does not support SELECT <alias> = <column definition>您在 Sybase SQL 查询中使用的语法。

您需要找到适用于两种数据库系统的查询版本,或者在您的类中包含某种开关,让您在使用 Sybase 时执行 Sybase 语法,在使用 HSQL 时执行 HSQL 语法。

关于java - 查询未在 HSQLDB 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12425234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com