validateEntityメソッドへの検証コードの記述

特定の検証メソッドを編集し、ビジネス・ロジックを指定できます。まず、エンティティ・オブジェクト・ウィザードを使用し、エンティティ・オブジェクトにメソッドを追加します。

エンティティ・レベルの検証コードを作成するには、エンティティ・オブジェクトのクラス・ファイルにprotectedメソッドvalidateEntity()を記述し、super.validateEntity()をコールして、検証コードを記述します。

次に例を示します。

protected validateEntity() {
  super.validateEntity()
  // ### Implement custom domain validation logic here. ### }

Business Components for Javaフレームワークにより、これらのメソッドのシグネチャが定義され、スケルトン・コードが生成されます。これに、検証ロジックを実装するコードを追加します。たとえば、Empエンティティ・オブジェクトの場合、フレームワークでは、Empエンティティ全体を検証するためのvalidateEntityメソッドを生成します。

エンティティ・オブジェクトの有効性が2つ以上の属性に依存している場合は、それらの属性が関連しているかどうかにかかわらず、エンティティ・レベルの検証を使用してください。たとえば、人事管理アプリケーションの場合、Empエンティティ・オブジェクトは、DateHired属性とYearsOfService属性間の関係が有効な場合にのみ有効です。検証規則により、他のエンティティからの値も評価できます。次のコード例では、マスター/ディテールAssociationで結合されたEmpエンティティ・オブジェクトとDeptエンティティ・オブジェクトからの値を評価します。


public void validateEntity() {
  // Generated call here.
  super.validateEntity();

  // Custom validation follows.
  // Rule: Employees in ACCOUNTING cannot have Salary > 1500.
  if (this.getDept().getDname().equals("ACCOUNTING") &&
    (this.getSal().compareTo(1500) > 0) {
	  throw new JboException("Salary too high for ACCOUNTING.");
  }
}

次のメソッドの例では、相互に関連していない3つの属性の値がチェックされます。どの属性値も他の属性値から導出されていません。しかし、これらの属性はいずれもnull以外の値が必要です。いずれかの値がnullの場合、メソッドにより例外がスローされます。


protected void validateEntity() throws DataAccessException {

  // Generated call here.
  super.validateEntity();

  // Custom validation follows.
  //------------------ EDITCHECKS: HeaderId
  Number reqHdrId = (Number)getHeaderId("HeaderId");
  if (reqHdrId == null) {
    throw new JboException("HeaderId is required");
  }

//------------------ EDITCHECKS: Segment1
  if ((getSegment1("segment1") == null) ||
    (((String)getSegment1("segment1")).trim().equals(""))) {
	  throw new JboException("segment1 is required");
  }

//------------------ EDITCHECKS: TypeLookupCode
  if ((getTypeLookupCode("typeLookupCode") == null) ||
    (((String)getTypeLookupCode("typeLookupCode")).trim().equals(""))) {
	  throw new JboException("typeLookupCode is required");
  }
}

関連項目
検証ロジックの追加方法