SQLのログをわかりやすく
ログにSQLファイルのパスを含めるようにしました(次のバージョンDoma 0.9.10から)。
SQLファイルから読まれたSQLの実行ログはこんな感じ。改行されていますが、一度のログ出力です。
INFO 2009-11-17 23:50:44,537 [main] sqlFilePath=[META-INF/org/seasar/doma/it/dao/DepartmentDao/selectById.sql] select * from DEPARTMENT where DEPARTMENT_ID = 99
自動生成の場合はnullと表示されます。
INFO 2009-11-17 23:59:40,944 [main] sqlFilePath=[null] update DEPARTMENT set DEPARTMENT_NAME = 'hoge', DEPARTMENT_NO = 1, VERSION = 1 + 1 where DEPARTMENT_ID = 1 and VERSION = 1
このあたりは簡単にカスタマイズできるので、不要なら出さなくても大丈夫です。
例外が発生したときもSQLファイルのパスを含めるようにしました。こんなかんじ(適当に改行してます)。
org.seasar.doma.jdbc.JdbcException: [DOMA2016] PreparedStatementの取得に失敗しました。 SQLファイルパス=[META-INF/org/seasar/doma/it/dao/DepartmentDao/selectById.sql] 。実際のSQL=[select * from XXX]。原因は次のものです。 org.seasar.framework.exception.SSQLException: [ESSR0072]SQLで例外(SQL=[select * from XXX], Message=[Table not found in statement [select * from XXX]], ErrorCode=-22, SQLState=S0002)が発生しました at org.seasar.doma.internal.jdbc.util.JdbcUtil.prepareStatement(JdbcUtil.java:59) ...