2016-08-09 82 views
0

我試圖在dynamodb中設置訂閱表以跟蹤用戶訂閱的用戶。如何用二級索引對dynamodb映射器進行註釋?

我有一個表與2個字符串屬性,SubscriberID和用戶名訂閱和會像這樣設置(使用名稱爲簡單起見):

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

    Dave ------ Steve 

    Dave ------ Josh 

    Dave ------ Cam 

    Cam ------ Dave 

    Cam ------ Justin 

所以它會被解讀:戴夫贊同史蒂夫,喬希和Cam。 Cam訂閱了Dave和Justin ..非常簡單。

我有一個SubscriberID作爲分區鍵的主鍵,所以我可以查詢用戶的訂閱。我還有一個名爲「getSubscribers」的二級索引,它具有UserID作爲分區鍵,因此我可以查詢用戶的用戶。

每次我嘗試保存dynamodb映射器對象時,它都不會顯示在我的「訂閱」表中,但我的其他表格只有一個主鍵輸入正確。

我幾乎可以肯定我的問題是我在我的Subscriber類註釋,我已經試過研究如何做到這一點是正確的設置,我想出了最好的是這個

@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;} 

} 

我知道,這可能是錯誤的,有誰知道這些註釋應該如何設置正確?任何幫助都是極好的。

回答

0

我想出來了。我刪除了GSI,但仍未更新到表格中。因此,我刪除並重新添加了它,但沒有使用GSI,並且它可以工作,然後添加了GSI,它仍然有效。

¯_(ツ)_/

相關問題