@ReferentialConstraintで参照動作の指定

[Seasar-user:16411] [S2JDBC-Gen] 外部キー生成DDLで制約オプションが反映されない の件です。

S2JDBCの次バージョンで導入されるReferentialConstraintアノテーションで対応するのはどうでしょうか。

対応するとしたらこんな感じになります。

@Entity
public class Employee {
  …
  @ReferentialConstraint(onDelete=ReferentialActionType.SET_DEFAULT, onUpdate=ReferentialActionType.CASCADE)
  @ManyToOne
  public Department department;
  …
}

onDeleteとonUpdateのデフォルトはReferentialActionType.NO_ACTIONにするつもり。

S2JDBC-Genは上記エンティティ定義に対し次のDDLを出力します。

alter table EMPLOYEE add constraint EMPLOYEE_FK1 foreign key (DEPARTMENT_ID) references DEPARTMENT (ID) 
  on delete set default,
  on update cascade;

これまでどおりに使いたい場合は、@ReferentialConstraintを指定しなければいいだけなので、デメリットはないかなーと思います。