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などというファイルが含まれているので、これを置き換え。