Boolean または Integer のプロパティーがデフォルト値に更新されない

ブールまたは整数データ型の拡張プロパティーが、デフォルト値に設定されたときに更新されない場合は、回避策として、ここに示す手順に従ってください。

問題

単一値のブールまたは整数データ型の拡張プロパティーの値をそのデフォルト値に設定しようとした場合に、プロパティーが更新されません。 例えば、単一値の整数データ型の値を 0 (デフォルト値) 以外の値に設定しようとした場合には、更新が正常に実行されます。 しかし、これをデフォルト値の 0 に設定しようとすると、プロパティー値が更新されません。 同様に、ブール・データ型の拡張プロパティーの値を true に設定しようとした場合には、更新が正常に実行されます。 しかし、このプロパティーをデフォルト値の false に設定しようとすると、値が更新されません。

これは、拡張プロパティーが単一値として定義されている場合にのみ発生します。 これは、EMF の制限事項です。

回避策

この問題を回避するには、以下の手順を実行します。

注: サンプル・コードのスニペットをアプリケーションで使用する前に、 必ず、プログラミングの前提条件のトピックの内容を参照し、そこで説明されている手順を完了してください。
  1. アプリケーション・コードで createSchema() メソッドを使用して、multi-valued を true に設定したブールまたは整数データ型の新しい拡張プロパティーを作成します。

    詳しくは、ファイル・リポジトリーでスキーマを拡張するためのサンプル・コードプロパティー拡張リポジトリーでスキーマを拡張するためのサンプル・コード、 およびLDAP リポジトリーでスキーマを拡張するためのサンプル・コードを参照してください。

    また、addIdMgrPropertyToEntityTypes wsadmin コマンドを使用して、multi-valued を true に設定したブールまたは整数データ型の新しい拡張プロパティーを作成することもできます。

    注: wimxmlextension.xml ファイルを直接編集することで、既存の拡張プロパティーの定義を単一値から多値に変更することも可能ですが、 これは推奨されません。
  2. create() メソッドまたは update() メソッドを使用して、新しいプロパティーの値をそのデフォルト値 (ブールの場合は false、整数の場合は 0) に指定します。 プロパティーの値は正常に更新されるはずです。
    以下のサンプル・コードは、create() メソッドを使用して、整数データ型の多値プロパティーにデフォルト値 0 を設定する方法の例です。
    DataObject root = SDOHelper.createRootDataObject();
    DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_PERSON_ACCOUNT);
    // Set the properties of the person
    entity.set("uid", uid);
    entity.set("cn", cn);
    entity.set("sn", sn);
    // Create a new array list of size one
    List lst = new ArrayList();
    lst.add(0);
    entity.set("jersyNumber", lst );
    System.out.println("Input datagraph before creating user"+ printDO(root));
    // Create the PersonAccount entity
    root = service.create(root);
    // Print the output datagraph
    System.out.println("Output datagraph after creating user"+ printDO(root));
    return root;


利用条件 | フィードバック