PostgreSQLのTEXT型はCLOBか否か? その2
PostgreSQLのTEXT型はCLOBか否か?のつづきです。
PostgreSQLのJDBCドライバでは、CLOBをOID型(ラージオブジェクト)にマッピングしているのですが、文字としてではなくあくまでバイト列として格納しているということがわかりました。
つまり、文字にたとえば日本語が含まれていると、OID型にバイト列として格納された後、日本語に戻せないのです。OID型(ラージオブジェクト)は実質的にはBLOBで、PostgreSQLにはCLOBがないようです。(ドキュメントにはCLOBがあるともないとも書いてありません)
で、TEXT型はどちらかというVARCHARなのですが、OID型には文字を入れられないので、しょうがないからS2JDBCでは@LobつきStringをOID型ではなくTEXT型にマッピングしようということになりました。
S2JDBC-Genでも、エンティティ内の@LobつきStringからTEXT型カラムのDDLを生成します。