问题描述
我在使用方法从 cosmos db sql api
获取结果时遇到了一些障碍:
.readAllItems(partitionKey,classtype)
.readAllItems(partitionKey,options,classtype)
当我有类的扁平结构时,上述方法工作正常。我的意思是没有子类嵌套在我的模型类中。下面是类示例,它不起作用:
public class Root {
public Root(){};
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Subclass getSubclass () {
return subclass;
}
public void setSubclass (Subclass subclass) {
this.subclass= subclass;
}
private String id = "";
private Subclass subclass= new Subclass ();
}
为了简单起见,我的子类只包含 partitionKey。
public class Subclass {
public String getPk() { return pk; }
public void setPk(String pk) {
this.pk = pk;
}
private String pk="";
}
有了这样的“结构”,我可以轻松地在容器内创建项目,并使用适当的分区键值,但我无法仅使用 partitionKey
值再次加载它们。这是从 cosmosdb
读取它们的代码片段。
PartitionKey partitionKey = new PartitionKey("properValueWhichWorksWithNonestedClassesInsideRoot");
CosmosPagedFlux<Root> pagedFluxResponse = container.readAllItems(partitionKey,Root.class);
try {
double totalRequestCharge = pagedFluxResponse.byPage(preferredPageSize).flatMap(fluxResponse -> {
entities.addAll(fluxResponse.getResults());
return Mono.just(fluxResponse.getRequestCharge());
})
.reduce(0.0,(x1,x2) -> x1 + x2)
.block();
logger.info("Query charge: {}",totalRequestCharge);
} catch(Exception err) {
err.printstacktrace();
}
return entities;
我不太确定我是做错了什么还是错误,因为我使用了与 .queryItems(query,queryOptions,classtype)
相同的代码,它也返回 CosmosPageFlux
而不是 .readAllItems
并且它有效完全没问题。
我使用这样的依赖:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-cosmos</artifactId>
<version>LATEST</version>
</dependency>
我还使用了一些特定版本的 LATEST
而它不起作用。