Saat menulis Aplikasi Java DynamoDB, Anda dapat menerima kesalahan 'tidak ada pemetaan untuk kunci HASH' saat menulis atau mengambil dari tabel jika tabel dan model datanya tidak dikonfigurasi dengan benar. Pengecualian penuh akan mirip dengan:

com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException: <YourClassNameHere>; no mapping for HASH key

13
fIwJlxSzApHEZIl 15 Maret 2017, 02:54

2 jawaban

Jawaban Terbaik

Dua hal bermanfaat untuk diperiksa di sini:

1) Untuk penyetel utama Anda untuk nilai kunci hash Anda, pastikan bahwa notasi @DynamoDBHashKey disetel dengan benar. @DynamoDBAttribute BUKAN yang benar untuk digunakan untuk kunci hash utama tabel Anda dan juga @DynamoDBIndexHashKey.

2) Pastikan bahwa kunci hash didefinisikan dalam definisi tabel:

        CreateTableRequest createTableRequest = new CreateTableRequest()
                .withTableName("testtable")
                .withKeySchema(
                        new KeySchemaElement("id", KeyType.HASH)
                )
                .withProvisionedThroughput(new ProvisionedThroughput(1L, 1L))
                .withAttributeDefinitions(
                        new AttributeDefinition("id", "S")
                );

        CreateTableResult result = amazonDynamoDB.createTable(createTableRequest);

Definisi tabel di atas membuat tabel 'testtable' dengan indeks utama atau variabel kunci hash berjudul id dan tipenya adalah S untuk string.

Selain itu, jika Anda menggunakan pewarisan, pastikan Anda tidak memiliki dua fungsi dengan nama yang sama yang saling menimpa. Dynamo akan menggunakan pengambil tingkat atas dan ini dapat menyebabkan masalah.

9
anon58192932 19 Desember 2017, 19:44

Pastikan getter kelas terpetakan beranotasi Anda dideklarasikan public.

12
Pavel 21 Januari 2018, 08:48