【发布时间】:2016-08-09 05:36:25
【问题描述】:
我正在尝试在 dynamodb 中设置订阅表来跟踪用户订阅的对象。
我有一个包含 2 个字符串属性、SubscriberID 和 UserID 的订阅表,并且会像这样设置(为简单起见使用名称):
[SubscriberID] ------ [UserID]
Dave ------ Steve
Dave ------ Josh
Dave ------ Cam
Cam ------ Dave
Cam ------ Justin
所以它会被解释为:Dave 订阅了 Steve、Josh 和 Cam。 Cam 订阅了 Dave 和 Justin.. 非常简单。
我有一个以 SubscriberID 作为分区键的主键,因此我可以查询用户的订阅。我还有一个名为“getSubscribers”的二级索引,它以 UserID 作为分区键,因此我可以查询用户的订阅者。
每次我尝试保存 dynamodb 映射器对象时,它都不会显示在我的订阅表中,但我的其他表只有 1 个主键输入正常。
我几乎可以肯定我的问题在于我的订阅者类上的注释,我尝试研究如何正确设置它,我想出的最好的就是这个
@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;}
}
我知道这可能是错误的,有人知道这些注释应该如何设置吗?任何帮助都会很棒。
【问题讨论】:
-
您找到解决方案了吗?我的想法是基本上复制表定义并为每个表使用不同的哈希键,但是我不确定这是否可行,而且它似乎是一个 hacky 解决方案
标签: java amazon-web-services annotations amazon-dynamodb nosql