Closed CharleyWuCL closed 3 years ago
使用BatchGetRow功能查询批量数据,查询一条不存在的数据,BatchGetRowResponse正常返回,取RowResult值的时候发现:isSuccess为true,但Row为null。
public class BatchGetRowResponse extends Response implements Jsonizable { /** * BatchGetRow批量操作中单行查询的结果。 * 若isSucceed为true,则代表该行查询操作成功,可以通过getRow获取单行查询的结果。 * 若isSucceed为false,则代表该行查询操作失败,可以通过getError获取失败的错误信息。 */ public static class RowResult {} }
private <T> void getBatchRow(Class<T> clazz, String table, List<PrimaryKey> pks) throws Exception { //读取一行数据,设置数据表名称。 MultiRowQueryCriteria criteria = new MultiRowQueryCriteria(table); //设置读取最新版本。 criteria.setMaxVersions(1); // 添加主键 for(PrimaryKey pk : pks){ criteria.addRow(pk); } // 执行查询 BatchGetRowRequest request = new BatchGetRowRequest(); request.addMultiRowQueryCriteria(criteria); BatchGetRowResponse response = client.batchGetRow(request); List<RowResult> rowRsts = response.getBatchGetRowResult(table); if (rowRsts.isEmpty()) { return Collections.emptyList(); } for(RowResult rowRst : rowRsts){ if(!rowRst.isSucceed()){ continue; } Row row = rowRst.getRow(); if(row.isEmpty()){ continue; } System.out.println(row); } }
这是 by design 的。如果行不存在,查询操作算是执行成功的,但是返回的 row 为 null 代表该行不存在。
现象
使用BatchGetRow功能查询批量数据,查询一条不存在的数据,BatchGetRowResponse正常返回,取RowResult值的时候发现:isSuccess为true,但Row为null。
期望
代码