Azure SDK for Java -更新表实体会添加名称以odata开头的字段

j8ag8udp  于 2023-03-19  发布在  Java
关注(0)|答案(1)|浏览(74)

我正在使用Azure SDK for Java并使用Azure存储表。我正在尝试更新行中的字段,我正在使用的代码如下

TableClient tableClient = getTableClient();

    String myPartitionKey = "partitionkey";
    String myRowKey = "rowkey";

    List<String> propertiesToSelect = new ArrayList<>();
    propertiesToSelect.add("field9");
    propertiesToSelect.add("field10");

    Response<TableEntity> response = tableClient.getEntityWithResponse(myPartitionKey, myRowKey, propertiesToSelect,
            Duration.ofSeconds(5), null);

    TableEntity tableEntity = response.getValue();

    Map<String, Object> properties = tableEntity.getProperties();
    properties.put("field9", "value9");
    properties.put("field10", "value10");
    tableClient.updateEntity(tableEntity, TableEntityUpdateMode.MERGE);

实际情况是字段值正在更新,但沿着一些名称以“odata”开头的字段也被添加到行中。
如何防止将这些字段添加到行中?
谢谢你的帮助。

vddsk6oq

vddsk6oq1#

解决方案是创建一个具有相同分区键和行键的新实体。然后添加我们试图更新的属性,再在合并模式下更新该实体。

TableEntity tableEntity = new TableEntity("partitionKey", "rowKey");
        tableEntity.addProperty("Version", version);
        tableEntity.addProperty("TimeStamp", myTimestamp);
        tableClient.updateEntity(tableEntity, TableEntityUpdateMode.MERGE);

相关问题