質問: ### 実現したいこと ・Spring Boot ・Postgres SQL ・MyBatis 以上3点を使用した環境における質問です。 Postgres SQLのとあるテーブルで、 xml型 のカラムがあるのですが、 これはドメインオブジェクト側ではどのような型宣言をすべきなのでしょうか。 もしくは全く違ったアプローチが必要なのでしょうか? ### 発生している問題・エラーメッセージ Caused by: org.springframework.jdbc.BadSqlGrammarException: Error updating database. Cause: org.postgresql.util.PSQLException: ERROR: column "analysis" is of type xml but expression is of type character varying ヒント: You will need to rewrite or cast the expression. ポジション: 73 The error may involve defaultParameterMap The error occurred while setting parameters SQL: INSERT INTO usd_jpy_prices (timestamp, price, analysis) VALUES (?, ?, ?) Cause: org.postgresql.util.PSQLException: ERROR: column "analysis" is of type xml but expression is of type character varying ヒント: You will need to rewrite or cast the expression. ポジション: 73 ; bad SQL grammar []; nested exception is org.postgresql.util.PSQLException: ERROR: column "analysis" is of type xml but expression is of type character varying ヒント: You will need to rewrite or cast the expression. ポジション: 73 ### 該当のソースコード ``` // DBの1テーブルに対応したドメインオブジェクトです @Data public class UsdJpyPriceBean { private Date date; private BigDecimal price; // ここの型はPostgres側では xml 型なのです private String indexDoc; } ``` ### 試したこと XML を toStringして格納しようとしたが当然上記のエラーが吐き出されます。 ### 補足情報(言語/FW/ツール等のバージョンなど) ・Spring Boot ・Postgres SQL ・MyBatis
回答: java.sql.SQLXML を利用してみてはどうでしょうか。 MybatisでSQLXML型を試したことはありませんが、おそらく独自の型を扱うハンドラークラスを作成する必要があると思います。 * 参考 typeHandlers * http://www.canetrash.jp/article/2778499.html * http://terasolunaorg.github.io/guideline/5.0.0.RELEASE/ja/ArchitectureInDetail/DataAccessMyBatis3.html#typehandler * http://terasolunaorg.github.io/guideline/5.0.0.RELEASE/ja/ArchitectureInDetail/DataAccessMyBatis3.html#dataaccessmybatis3howtoextendtypehandler * http://www.mybatis.org/mybatis-3/ja/configuration.html 引用 標準のタイプハンドラーをオーバーライドしたり、自ら作成したタイプハンドラーを使って未対応あるいは非標準の型を扱うことも可能です。自作する場合は、BaseTypeHandler クラスのサブクラスを作成します。