使用 dynamodb 映射器将属性投影到索引

Projecting attributes to indices using dynamodb mapper

我只是找不到使用 dynamodb 映射器注释将选定属性(不是 hashkey)投影到索引中的方法。

考虑一个例子:

@DynamoDBTable(tableName = "scores")
public class DynaScoreItem {
    @DynamoDBHashKey
    int user;
    @DynamoDBRangeKey
    int level;
    @DynamoDBAttribute
    int score;
    @DynamoDBIndexRangeKey(localSecondaryIndexName = "sort_by_added")
    long added;
}

我只想将分数添加到 "sort_by_added" 索引。如何使用注释来完成?

属性投影是在创建索引时设置的,而不是由注释决定的(目前)。无法将属性标记为带有注释的属性投影的一部分。查看 DynamoDBMapper.generateCreateTableRequest(Class<?> clazz):

的 Javadoc

Parse the given POJO class and return the CreateTableRequest for the DynamoDB table it represents. Note that the returned request does not include the required ProvisionedThroughput parameters for the primary table and the GSIs, and that all secondary indexes are initialized with the default projection type - KEY_ONLY.

其中的关键部分是 默认投影类型 - KEY_ONLY。如果您使用此 API 创建 table,则必须自己指定投影。