es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Las pruebas con Azure storage devuelven campos nulos en una tabla.

Estoy trabajando con Azure Storage. Hice las conexiones para la tabla Token y obtengo los valores correctamente. Pero en otra tabla solo obtengo los valores de 3 campos y los otros 4 retornan como nulos.

Este es mi modelo:

@Data
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class BoltonInfo extends TableServiceEntity implements Serializable {
    private String boltonCode;
    private String boltonName;
    private String boltonType;
    private boolean isAltaVelocidad;
    private String boltonOrder;
}

Este es mi ServicesImpl:

private void processBalances(List<saldosresponse> boltons, JsonNode jsonBucketsList, int productID) throws ParseException {
    List<string> listBucketCode = new ArrayList<>();

    for (JsonNode infoBucket : jsonBucketsList) {
        if (infoBucket.has(BUCKETCOUNTERS) && !MONEY.equals(infoBucket.path(USAGETYPE).asText())) {
            listBucketCode.add(infoBucket.get("id").asText());
        }
    }
    List<boltoninfo> boltonList = new ArrayList<>(); 
    listBucketCode.forEach(boltonCode -> {
        BoltonInfo response = new BoltonInfo();
        try {
            response = (BoltonInfo) cloudMethodServiceImpl.readEntity(configProperties.getBultonsTable(), boltonCode, boltonCode, BoltonInfo.class);
            boltonList.add(response);
        } catch (URISyntaxException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (StorageException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println(e.getMessage());
        }   
    });
}

La conexión con la tabla readEntity:

public <t> Object readEntity(String table, String partitionKey, String rowKey, Object value) throws URISyntaxException, StorageException {
    Object response = null;
    CloudTable entity = initCloudTable().getTableReference(table);
    System.out.println("La tabla existe? " + entity.exists());
    Class<? extends TableEntity> tableEntity = (Class<? extends TableEntity>) value;
    TableOperation operation = TableOperation.retrieve(partitionKey, rowKey, tableEntity);
    response = entity.execute(operation).getResultAsType();
    return response;
}

La respuesta retorna cuatro campos nulos:

enter image description here

Esta es la tabla con sus campos:

enter image description here

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema parece estar en el mapeo de los campos de la tabla de almacenamiento de Azure al modelo BoltonInfo. Parece que solo se están proporcionando correctamente tres campos, mientras que los otros cuatro están devolviendo null.

    Una posibilidad es que los nombres de los campos en la clase BoltonInfo no coincidan con los nombres de los campos correspondientes en la tabla de almacenamiento de Azure. Por lo tanto, cuando se llama al método readEntity, algunos campos no se están mapeando correctamente.

    Para resolver esto, asegúrese de que los nombres de los campos en la clase BoltonInfo coincidan con los nombres de los campos correspondientes en la tabla de almacenamiento de Azure. Alternativamente, podría utilizar anotaciones para especificar el mapeo entre los campos en la clase y la tabla. Por ejemplo, podría utilizar la anotación @TableProperty para especificar el mapeo para cada campo:

    @TableProperty(name = "boltonCode")
    private String boltonCode;
    
    @TableProperty(name = "boltonName")
    private String boltonName;
    
    @TableProperty(name = "boltonType")
    private String boltonType;
    
    @TableProperty(name = "isAltaVelocidad")
    private boolean isAltaVelocidad;
    
    @TableProperty(name = "boltonOrder")
    private String boltonOrder;
    

    Al especificar el atributo name en la anotación @TableProperty, puede asegurarse de que cada campo se mapee correctamente a la columna correspondiente en la tabla de almacenamiento de Azure.

Comments are closed.