概要
SQLはすべてバインド変数(?)を使った準備された文に変換されて実行されますが、 このドキュメントでは、発行されたSQLがどのようなものかわかりやすくするためにバインド変数を実際の値に置き換えたログ用のSQLを示します。
SQLの自動生成による更新
test/tutorial/UpdateTest.javaのtestUpdateメソッドを参照してください。 SQLの自動生成による更新です。
Daoのメソッドは次のとおりです。
@Update int update(Employee employee);
Daoのメソッドは次のように呼び出します。 識別子は自動生成されるのでエンティティに設定する必要はありません。
Employee employee = dao.selectById(1); employee.setName("hoge"); employee.setJobType(JobType.PRESIDENT); dao.update(employee);
SQLのログは次のように出力されます(改行しています)。
update Employee set JOB_TYPE = 'PRESIDENT', name = 'hoge', updateTimestamp = '2009-11-21 17:06:37.593', VERSION = 1 + 1 where id = 1 and VERSION = 1
@Versionが注釈されたversionプロパティに対応するカラムは検索条件に含まれます。 また、versionプロパティに対応するカラムが増分して更新されます。
updateTimestampプロパティはEmployeeListenerで自動設定されます。 test/tutorial/EmployeeListener.javaを参照してください。
エンティティクラスに@OriginalStatesが注釈されたプロパティがある場合、 バージョン番号を除き、 Daoから取得後に変更された値のみがUPDATE文のSET句に含まれます。