churaを試してみる その2

先日の日記にて

# suga 『>エラーメッセージ
その cause までたどれば JDBC Driver のメッセージが出ていませんか』

とコメントしていただいたので、試してみた。

DeptConfirmPage#doFinish()を以下のように変更。

	@TakeOver(type = TakeOverType.NEVER)
	public String doFinish() {
		try {
			switch(getCrudType()) {
				case CrudType.CREATE:
					getDeptDao().insert(getDeptDxo().convert(this));
					break;
				case CrudType.UPDATE:
					getDeptDao().update(getDeptDxo().convert(this));
					break;
				case CrudType.DELETE:
					getDeptDao().delete(getDeptDxo().convert(this));
					break;
				default:
					break;
			}
		} catch (SQLRuntimeException e) {
			
			e.getCause().getCause().printStackTrace();
		}
		return "deptList";
	}

実行したときにでるスタックトレースはこうなった。

java.sql.SQLException: Unique constraint violation:  in statement [INSERT INTO DEPT (ID, DEPTNO, DNAME, LOC, VERSIONNO) VALUES (?, ?, ?, ?, ?)]

ちゃんと出るようになりました(^^)

      • -

getCause()というメソッドを初めて知りました。e.getCause().getCause()としているのは、SQLRuntimeException < SRuntimeException < SRuntimeExceptionというクラス階層になっているため、だと思ってます。