2
我正在使用HSQLDB進行JUNIT測試。查詢未在HSQLDB中運行
有一個查詢不在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數據源傳遞失敗,該查詢運行非常好。
如果我改變字符串如下
public static final String ORG_CODE_QUERY = "SELECT org.name as ORG_CODE" +
" FROM " + ORGANIZATION + " org " +
" WHERE org.id = ? " +
" AND org.industry = ? ";
遺憾的是不能改變生產代碼也運行在HSQL。
我得到下面的錯誤:
Caused by: java.sql.SQLException: Column not found: ORG_CODE in statement
請讓我知道是否有針對此問題出現轉機。
感謝 Avnish
HSQL的高版本是否支持此查詢?嘗試使用HSQL 2.2.9,但無法註冊驅動程序。按照文檔JDBC驅動程序是org.hsqldb.jdbc.jdbcDriver ...謝謝 – user1671474
我鏈接到最新的HSQL版本的文檔。所以不行。 –
對於2.2.9,請使用與之前相同的字符串(org.hsqldb.jdbcDriver)來註冊驅動程序。替代方案實際上是org.hsqldb.jdbc.JDBCDriver,但可能不適用於某些第三方軟件。 – fredt