DynamoDB 增强 - 查询没有结果

问题描述

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

测试用例 1:在表“digital_form”上使用 Get Item,PK =“FORM#ABC123”,SK =“INFO#ABC123”。可以返回结果

2021-01-09 11:31:57.067 542-31149/? E/ActivityManager: ANR in com.example.td.barapp (com.example.td.barapp/.MainActivity)
    PID: 31101
    Reason: Input dispatching timed out (deb7f58 com.example.td.barapp/com.example.td.barapp.MainActivity (server) is not responding. Waited 5005ms for MotionEvent)
    Parent: com.example.td.barapp/.MainActivity
    Load: 0.71 / 0.83 / 1.35
    ----- Output from /proc/pressure/memory -----
    some avg10=0.00 avg60=0.00 avg300=0.00 total=46655214
    full avg10=0.00 avg60=0.00 avg300=0.00 total=3766399
    ----- End output from /proc/pressure/memory -----
    
    cpu usage from 1ms to 6375ms later (2021-01-09 10:31:50.651 to 2021-01-09 10:31:57.025):
      93% 31101/com.example.td.barapp: 75% user + 17% kernel / faults: 2812 minor
      31% 542/system_server: 3.7% user + 27% kernel / faults: 7660 minor
      6.7% 2702/com.android.systemUI: 5% user + 1.7% kernel / faults: 4875 minor
      5.6% 277/android.hardware.bluetooth@1.1-service.sim: 0.1% user + 5.4% kernel
      4.7% 3858/com.google.android.gms.persistent: 2.6% user + 2% kernel / faults: 2653 minor
      0.1% 424/media.codec: 0% user + 0.1% kernel / faults: 3235 minor
      0.1% 426/media.swcodec: 0% user + 0.1% kernel / faults: 3265 minor
      2.1% 1102/com.android.phone: 0.9% user + 1.2% kernel / faults: 1428 minor
      2% 374/adbd: 0% user + 2% kernel
      1.8% 947/com.android.networkstack.process: 1.4% user + 0.4% kernel / faults: 1128 minor
      0.1% 149/logd: 0% user + 0.1% kernel / faults: 2 minor
      0.1% 410/media.extractor: 0% user + 0% kernel / faults: 1490 minor
      0.1% 1650/com.android.emulator.multidisplay: 0% user + 0% kernel / faults: 913 minor
      0% 1629/com.android.ims.rcsservice: 0% user + 0% kernel / faults: 904 minor
      1% 295/android.hardware.graphics.composer@2.3-service: 0% user + 1% kernel
      0% 1082/com.android.se: 0% user + 0% kernel / faults: 871 minor
      0% 1/init: 0% user + 0% kernel
      0.7% 10/rcu_preempt: 0% user + 0.7% kernel
      0% 2033/com.android.bluetooth: 0% user + 0% kernel / faults: 112 minor
      0% 251/tombstoned: 0% user + 0% kernel
      0.4% 363/logcat: 0% user + 0.4% kernel
      0% 30392/logcat: 0% user + 0% kernel
      0.3% 168/jbd2/vdc-8: 0% user + 0.3% kernel
      0.1% 9/ksoftirqd/0: 0% user + 0.1% kernel
      0.1% 16/ksoftirqd/1: 0% user + 0.1% kernel
      0.1% 109/kworker/1:1H-kblockd: 0% user + 0.1% kernel
      0% 153/vndservicemanager: 0% user + 0% kernel
      0.1% 266/statsd: 0% user + 0.1% kernel / faults: 47 minor
      0% 267/netd: 0% user + 0% kernel / faults: 36 minor
      0.1% 326/android.hardware.wifi@1.0-service: 0% user + 0.1% kernel
      0.1% 340/audioserver: 0.1% user + 0% kernel / faults: 41 minor
      0.1% 348/surfaceflinger: 0% user + 0.1% kernel / faults: 40 minor
      0% 383/cameraserver: 0% user + 0% kernel / faults: 43 minor
      0% 385/drmserver: 0% user + 0% kernel / faults: 40 minor
      0% 413/mediaserver: 0% user + 0% kernel / faults: 42 minor
      0.1% 421/wificond: 0% user + 0.1% kernel
      0.1% 919/android.hardware.gnss@2.0-service.ranchu: 0% user + 0.1% kernel
      0.1% 30400/kworker/u4:0-phy0: 0% user + 0.1% kernel
      0.1% 30858/kworker/0:1-events_power_efficient: 0% user + 0.1% kernel
      0% 30977/kworker/1:2-mm_percpu_wq: 0% user + 0% kernel
     +0% 31151/crash_dump32: 0% user + 0% kernel
    96% TOTAL: 55% user + 40% kernel + 0% iowait + 0.3% softirq
    cpu usage from 49ms to 796ms later (2021-01-09 10:31:50.699 to 2021-01-09 10:31:51.446):
      61% 542/system_server: 0% user + 61% kernel / faults: 287 minor
        57% 31149/AnrConsumer: 1.7% user + 56% kernel
      99% 31101/com.example.td.barapp: 99% user + 0% kernel
        99% 31101/ample.td.barapp: 99% user + 0% kernel
      4.6% 277/android.hardware.bluetooth@1.1-service.sim: 0% user + 4.6% kernel
        6.1% 1167/bluetooth@1.1-s: 0% user + 6.1% kernel
      1.5% 295/android.hardware.graphics.composer@2.3-service: 0% user + 1.5% kernel
        1.5% 349/: 0% user + 1.5% kernel
      2.1% 3858/com.google.android.gms.persistent: 0% user + 2.1% kernel
    87% TOTAL: 51% user + 36% kernel

测试用例 2:在同一张表上使用 Query,PK= "FORM#ABC123" 并且 SK 以 "INFO" 开头。假设它会返回包含测试用例 1 的结果集。但是,没有返回结果。

    @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 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");
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...