JDBCドライバ

JDBCドライバ(postgresql-8.1-404.jdbc3.jar)のソースを読む。
というのも、以前のシステムで今まで動いていたソースがJDBCドライバのバージョンをあげたことによって例外が発生したため。
【現象】
以下のテーブルに対して

                Table "yone"
 Column |         Type          | Modifiers
--------+-----------------------+-----------
 id     | integer               |
 name   | character varying(10) |

以下のSQLを実行

testdb=# insert into yone values('100', 'test');
INSERT 140912707 1

このSQLJavaで実行した場合

PreparedStatement ps = con.prepareStatement("insert into yone values(?, ?)");
ps.setString(1, "100");
ps.setString(2, "test");
int updCnt = ps.executeUpdate();

サーバのバージョン8系に対して、JDBCドライバのバージョン8系を使用した場合にのみ以下の例外が発生

org.postgresql.util.PSQLException: ERROR: column "id" is of type integer but expression is of type character varying
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1512)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1297)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:430)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:346)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:300)

おっしゃるとおりですが、何故サーバ8系&JDBCドライバ8系の時だけなぜ起こるのだろ?
まとめると

JDBCドライバのバージョン8系を使用した場合
・サーバのバージョン7系は問題無く動作
・サーバのバージョン8系に対しては例外発生

JDBCドライバのバージョン7系を使用した場合
・サーバのバージョン7系は問題無く動作
・サーバのバージョン8系は問題無く動作

ちなみにOracleでは問題なく動作。
結論、JDBCドライバ7系を使用 or プログラムで正しくsetIntを使用か。