没有使用缺省值来更新的 Boolean 或 Integer 属性

当设置为缺省值时,在布尔或整数数据类型的扩展属性未更新的情况下,遵循以下列出的步骤以作为变通方法。

问题

如果您尝试将单值布尔或整数数据类型的扩展属性值设置为其缺省值,那么该属性不会更新。例如,如果您尝试将单值整数数据类型值设置为非 0(这是缺省值)的任何值,那么就成功执行了该更新。但是,如果您尝试将其设置为其缺省值 0,那么属性值没有得到更新。类似地,如果您尝试将布尔数据类型的扩展属性值设置为 true,那么就成功执行了该更新。但是,如果您尝试将该属性设置为其缺省值 false,那么该值没有更新。

仅在扩展的属性定义为单值时才发生此情况。这是 EMF 限制。

变通方法

完成以下步骤来变通此问题。

注: 在应用程序中使用样本代码片段之前,确保您已阅读了“编程先决条件”主题中的信息并完成了其中描述的步骤。
  1. 在应用程序代码中使用 createSchema() 方法来新建多值设置为 true 的布尔或整数数据类型的扩展属性。

    有关详细信息,请参阅用于在文件存储库中扩展模式的样本代码用于在属性扩展存储库中扩展模式的样本代码用于在 LDAP 存储库中扩展模式的样本代码

    您还可以使用 addIdMgrPropertyToEntityTypes wsadmin 命令来新建多值设置为 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;


使用条款 | 反馈