Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DynamoDB增强-查询没有结果_Java_Amazon Dynamodb_Dynamodb Queries_Aws Java Sdk 2.x - Fatal编程技术网

Java DynamoDB增强-查询没有结果

Java DynamoDB增强-查询没有结果,java,amazon-dynamodb,dynamodb-queries,aws-java-sdk-2.x,Java,Amazon Dynamodb,Dynamodb Queries,Aws Java Sdk 2.x,我已经实现了以下两个测试用例来测试DynamoDB增强型库 测试用例1:使用表“digital_form”上的Get项,使用PK=“form#ABC123”和SK=“INFO#ABC123”。哪个可以返回结果 @Test public void testGetItemWithPKSK() throws ExecutionException, InterruptedException { DynamoDbAsyncTable<DigitalFormDao>

我已经实现了以下两个测试用例来测试DynamoDB增强型库

测试用例1:使用表“digital_form”上的Get项,使用PK=“form#ABC123”和SK=“INFO#ABC123”。哪个可以返回结果

    @Test
    public void testGetItemWithPKSK() throws ExecutionException, InterruptedException {
        DynamoDbAsyncTable<DigitalFormDao> digitalformTable = dynamoDbEnhancedAsyncClient
                .table("digital_form", TableSchema.fromBean(DigitalFormDao.class));

        DigitalFormDao form = digitalformTable.getItem(
                Key.builder().partitionValue("FORM#ABC123").sortValue("INFO#ABC123").build()).get();

        System.out.println(form.getSk());
    }
@测试
public void testGetItemWithPKSK()引发ExecutionException、InterruptedException{
DynamoDbAsyncTable digitalformTable=dynamoDbEnhancedAsyncClient
.table(“数字表单”,TableSchema.fromBean(DigitalFormDao.class));
DigitalFormDao form=digitalformTable.getItem(
Key.builder().partitionValue(“FORM#ABC123”).sortValue(“INFO#ABC123”).build()).get();
System.out.println(form.getSk());
}
测试用例2:在同一个表上使用Query,其中PK=“FORM#ABC123”和SK以“INFO”开头。假设它将返回一组结果,包括测试用例1。然而,没有结果是返回的

    @Test
    public void testQueryWithPKandSKBegin(){
        DynamoDbAsyncTable<DigitalFormDao> digitalformTable = dynamoDbEnhancedAsyncClient
                .table("digital_form", TableSchema.fromBean(DigitalFormDao.class));

        PagePublisher<DigitalFormDao> digitalForms = digitalformTable.query(
                r -> r.queryConditional(
                    sortBeginsWith(k -> k.partitionValue("FORM#ABC123").sortValue("INFO"))));
        
        AtomicInteger atomicInteger = new AtomicInteger();
        atomicInteger.set(0);

        digitalForms.subscribe(page -> {
            DigitalFormDao digitalFormDao = (DigitalFormDao) page.items().get(atomicInteger.get());
            System.out.println(digitalFormDao.getSk());
            atomicInteger.incrementAndGet();
        });
    }
@测试
public void testQueryWithPKandSKBegin(){
DynamoDbAsyncTable digitalformTable=dynamoDbEnhancedAsyncClient
.table(“数字表单”,TableSchema.fromBean(DigitalFormDao.class));
PagePublisher digitalForms=digitalformTable.query(
r->r.queryConditional(
sortBeginsWith(k->k.partitionValue(“FORM#ABC123”).sortValue(“INFO”));
AtomicInteger AtomicInteger=新的AtomicInteger();
原子整数集(0);
digitalForms.订阅(第->{
DigitalFormDao DigitalFormDao=(DigitalFormDao)page.items().get(atomicInteger.get());
System.out.println(digitalFormDao.getSk());
atomicInteger.incrementAndGet();
});
}
我的查询语句中有什么错误吗?

这行吗

public static void queryTableSortKeyBetween(DynamoDbEnhancedClient enhancedClient) {

        try {
            DynamoDbTable<Customer> mappedTable =
                    enhancedClient.table("DigitalForm", TableSchema.fromBean(DigitalFormDao.class));

            // Querying the sort key Name between two values
            Key key = Key.builder().partitionValue("FORM#ABC123").sortValue("INFO").build();

            QueryConditional queryConditional = QueryConditional.sortBeginsWith(key);

            PageIterable<DigitalFormDao> forms  =
                    mappedTable.query(r -> r.queryConditional(queryConditional));

            forms.stream()
                     .forEach(p -> p.items().forEach(item -> System.out.println(item.getCustName())));

        } catch (DynamoDbException e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }
        System.out.println("Done");
}

public static void queryTableSortKeyBetween(DynamoDbEnhancedClient增强客户端){
试一试{
可动态映射表=
enhancedClient.table(“DigitalForm”,TableSchema.fromBean(DigitalFormDao.class));
//在两个值之间查询排序键名称
Key Key=Key.builder().partitionValue(“FORM#ABC123”).sortValue(“INFO”).build();
QueryConditional QueryConditional=QueryConditional.sortBeginsWith(key);
可分页表格=
查询(r->r.queryConditional(queryConditional));
forms.stream()
.forEach(p->p.items().forEach(item->System.out.println(item.getCustName());
}捕获(发电机异常e){
System.err.println(e.getMessage());
系统出口(1);
}
系统输出打印项次(“完成”);
}

当您只提供分区键值
表单#ABC123
(未指定排序键)
PageIterable customers=digitalformTable.query(keyEqualTo(k->k.partitionValue(“表单#ABC123”))时,它会得到所有结果吗是,这个可以获取结果。异步方法有什么问题吗?对我来说不起作用