About

ドキュメント

プロジェクト文書

Built by Maven

概要

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句に含まれます。