【发布时间】:2012-09-07 15:51:41
【问题描述】:
我正在使用 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;
}
});
}
弹簧配置:
<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
如果这个问题有好转,请告诉我。
谢谢 完成
【问题讨论】: