【发布时间】:2018-02-12 17:20:56
【问题描述】:
我使用的是 DynamoDB SDK 1.11.185 版本。我有一个客户端实体通过 DynamoDBMapper 注释映射到客户端 DynamoDB 表。其中一个属性包含嵌套值(参见下面的代码示例)。我想从 Options 类中向 zone 属性添加一个本地二级索引。一旦我想保存一个对象,我就从这个类中得到一个空指针异常
com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperTableModel
第 415 行。看起来像是库中的错误。
P.D.如果我通过 Client 实体的 clientId 属性生成索引,一切正常。
@DynamoDBTable(tableName="Clients")
public class Client {
private String id;
private String clientId;
private Date created;
private Options options;
public Client() {
}
public Client(String id, String clientId, Options options) {
this.id = id;
this.clientId = clientId;
this.options = options;
this.created = new Date();
}
@DynamoDBHashKey
public String getId() { return id; }
public void setId(String id) { this.id = id; }
@DynamoDBAttribute
public String getClientId() { return clientId; }
public void setClientId(String clientId) { this.clientId = clientId; }
@DynamoDBAttribute
public Options getOptions() { return options; }
public void setOptions(Options options) { this.options = options; }
@DynamoDBRangeKey
public Date getCreated() { return created; }
public void setCreated(Date created) { this.created = created; }
}
@DynamoDBDocument
public class Options {
private String zone;
public Options() {
}
public Options(String zone) {
this.zone = zone;
}
@DynamoDBIndexRangeKey(localSecondaryIndexName = "zone-index")
public String getZone() { return zone; }
public void setZone(String zone) { this.zone = zone; }
}
****************************** 已编辑 ****************** *******
@Raniz 的正确答案和 Indexing on nested field
虽然可以使用 JSON 属性来完成: DynamoDB create index on map or list type
【问题讨论】: