Locked History Actions

Play/AnormPostgreSQL

AnormでPostgreSQLにアクセス

PostgreSQLに対してAnormのMagicを使うのには問題がある。以下を参照。

https://groups.google.com/forum/#!topic/play-framework/5iMpoKpAHRQ

要するに、なぜかPostgreSQLのConnection実装のgetTableName(int column)というメソッドが常に空文字列を返してしまうため、anormの側は結果セットの列がどのテーブルのものであるかを認識できないということらしい。

postgreSQLのjdbcドライバを改良することにより、これをマトモにできるという(が、ほんとにこれだけでいいのか?)

PostgreSQLドライバの改良

  • ソースコードを取得する。

cvs -z3 -d :pserver:anonymous@cvs.pgfoundry.org:/cvsroot/jdbc co -P pgjdbc
  • pgjdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSetMetaData.javaを編集し、getTableNameメソッドの「return "";」を「return getBaseTableName(column);」に変更する。
  • antでビルドすると、jarsディレクトリにpostgresql.jarが作成される。

PostgreSQLドライバの置き換え

playフレームワークのframework/libディレクトリにpostgresql-9.0.jarなどというファイルが含まれているので、これを置き換え。