如何使用二级索引注释dynamodb映射器?

时间:2016-08-09 05:36:26

标签: java amazon-web-services annotations amazon-dynamodb nosql

我正在尝试在dynamodb中设置一个Subscription表来跟踪用户订阅的对象。

我有一个包含2个字符串属性的Subscriptions表,SubscriberID和UserID,并且会像这样设置(为简单起见使用名称):

[SubscriberID] ------ [UserID]

    Dave   ------ Steve

    Dave   ------ Josh

    Dave   ------ Cam

    Cam    ------ Dave

    Cam    ------ Justin

所以它会被解释为:戴夫订阅史蒂夫,乔希和卡姆。 Cam订阅了Dave和Justin ......非常简单。

我有一个主键,其中SubscriberID作为分区键,因此我可以查询用户的订阅。我还有一个名为“getSubscribers”的二级索引,它将UserID作为分区键,因此我可以查询用户的订阅者。

每次我尝试保存一个dynamodb映射器对象时,它都没有显示在我的Subscriptions表中,但是我的其他表只有一个主键正在输入正常。

我几乎是肯定的,我的问题在于我的订阅者类上的注释,我已经尝试过研究如何正确设置,我想出的最好的是

@DynamoDBTable(tableName = "starter-mobilehub-1604839252-Subscriptions ")
public class Subscription {

  private String SubscriberID;
  private String UserID;

  @DynamoDBHashKey(attributeName = "SubscriberID")
  public String getSubscriberID() {return SubscriberID;}
  public void setSubscriberID(String UserID) {this.SubscriberID = UserID;}

  @DynamoDBIndexHashKey(globalSecondaryIndexName = "getSubscribers", attributeName = "UserID")
  public String getUserID() {return UserID;}
  public void setUserID(String UserID) {this.UserID = UserID;}

}

我知道这可能是错的,有谁知道这些注释应该如何正确设置?任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

我以某种方式想出来了。我删除了GSI,它仍然没有更新到表中。所以我删除并重新添加它没有GSI,它工作,然后添加GSI,它仍然有效。

_(ツ)_ /¯