- - PR -
SpringのRDBMS操作オブジェクトで例外発生
1
投票結果総投票数:6 | |||
---|---|---|---|
Spring JDBC | 6票 | 100.00% | |
|
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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