- PR -

SpringのRDBMS操作オブジェクトで例外発生

1
投票結果総投票数:6
Spring JDBC 6 100.00%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
小太郎
会議室デビュー日: 2006/08/25
投稿数: 1
投稿日時: 2006-08-25 20:37
SpringとRDBMS操作オブジェクトにより、以下の様にCTIDを利用したSELECT文を発行しようとしていますが、実行に例外が発生します。

SQLまたはTypes.VARCHARの設定に問題があると思われますが、解決方法がわかりません。
どなたか、ご指導下さい。
よろしくお願いします。

環境
Java 1.5.0_07
Spring 2.0
PostgreSQL 8.1

ソース
private class FindByAccctidQuery extends MappingSqlQuery {
private static final String SQL_QUERY = "SELECT CTID,* from ACC where CTID= ?";

private FindByAccctidQuery(DataSource ds) {
super(ds, SQL_QUERY);
super.declareParameter(new SqlParameter("ctid", Types.VARCHAR));
compile();
}
protected Object mapRow(ResultSet rs, int rowNumber) throws SQLException {
省略
}
private Accbean query(String ctid) {
List list = execute(ctid);
return (Accbean)list.get(0);
}
}

発生した例外

[Log4j][FATAL] 2006-08-25 20:16:05,640 SystemExceptionHandler:execute - org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT CTID,* from ACC where CTID= ?]; nested exception is org.postgresql.util.PSQLException: ERROR: operator does not exist: tid = character varying
Hint: No operator matches the given name and argument type(s). You may need to add explicit type casts. Caused by: org.postgresql.util.PSQLException: ERROR: operator does not exist: tid = character varying
Hint: No operator matches the given name and argument type(s). You may need to add explicit type casts.
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1525)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1309)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:354)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:258)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92)
at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:560)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:499)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:553)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:578)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:610)
at org.springframework.jdbc.object.SqlQuery.execute(SqlQuery.java:105)
at org.springframework.jdbc.object.SqlQuery.execute(SqlQuery.java:192)
at org.springframework.jdbc.object.SqlQuery.execute(SqlQuery.java:200)
at hypersystem.model.dao.AccountDAOImpl$FindByAccctidQuery.query(Unknown Source)


1

スキルアップ/キャリアアップ(JOB@IT)