Propiedad Boolean o Integer no actualizada con el valor predeterminado

Siga los pasos que se detallan en este apartado como método alternativo cuando una propiedad ampliada de tipo de datos boolean o integer no se actualiza si se establece en el valor predeterminado.

Problema

Si intenta establecer el valor de una propiedad ampliada de un tipo de datos boolean o integer de un solo valor en su valor predeterminado, la propiedad no se actualiza. Por ejemplo, si intenta establecer el valor de un tipo de datos integer de un solo valor en cualquier valor que no sea 0, que es el valor predeterminado, la actualización se lleva a cabo satisfactoriamente. Sin embargo, si intenta establecerla en su valor predeterminado 0, el valor de la propiedad no se actualiza. De manera similar, si intenta establecer el valor de una propiedad ampliada del tipo de datos boolean en true, la actualización se lleva a cabo satisfactoriamente. Sin embargo, si intenta establecer la propiedad en su valor predeterminado false, el valor no se actualiza.

Esto sólo se produce cuando la propiedad ampliada se define como valor individual. Es una limitación de EMF.

Método alternativo

Siga estos problemas para eludir este problema.

Nota: Antes de utilizar los fragmentos de código de ejemplo de la aplicación, asegúrese de haber leído la información y llevado a cabo los pasos que se describen en el tema Requisitos previos de programación.
  1. Utilice el método createSchema() en el código de la aplicación para crear una propiedad ampliada nueva de tipo de datos boolean o integer con el elemento "multi-valued" establecido en true.

    Para obtener información detallada, consulte Código de ejemplo para extender un esquema en el depósito de archivos, Código de ejemplo para extender el esquema en el depósito de extensión de propiedades y Código de ejemplo para extender el esquema en un depósito LDAP.

    También puede utilizar el mandato wsadmin addIdMgrPropertyToEntityTypes para crear una propiedad ampliada nueva de tipo de datos boolean o integer con el elemento "multi-valued" establecido en true.

    Nota: También puede cambiar la definición de una propiedad ampliada existente de manera que pase de tener un valor a tener varios valores editando directamente el archivo wimxmlextension.xml, aunque no se recomienda hacerlo.
  2. Utilice los métodos create() o update() para especificar el valor de la propiedad nueva como valor predeterminado, es decir, false para boolean o 0 para integer. El valor de la propiedad debería actualizarse satisfactoriamente.
    En el ejemplo de código siguiente se muestra cómo utilizar el método create() para establecer el valor predeterminado 0 para una propiedad con varios valores de tipo de datos integer:
    DataObject root = SDOHelper.createRootDataObject();
    DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_PERSON_ACCOUNT);
    // Establece las propiedades de la persona
    entity.set("uid", uid);
    entity.set("cn", cn);
    entity.set("sn", sn);
    // Crear una nueva lista de matriz de tamaño uno
    List lst = new ArrayList();
    lst.add(0);
    entity.set("jersyNumber", lst );
    System.out.println("Input datagraph before creating user"+ printDO(root));
    // Crear la entidad PersonAccount
    root = service.create(root); 
    // Imprimir gráfico de datos de salida
    System.out.println("Output datagraph after creating user"+ printDO(root));
    return root;


Condiciones de uso | Comentarios