簡體   English   中英

從 dynamoDB 表中刪除數據時出錯

[英]Error while deleting data from dynamoDB table

我正在嘗試根據 Id(HashKey) 從我的 DynamoDB 表中刪除數據。

協會.java

@DynamoDBTable(tableName = "Association")
public class Association {

    private String id;
    private String name;
    private String adminName;
    private String email;
    private String url;
    private String contactNumber;
    private String password;

    public Association() { }

    public Association(String name, String adminName, String email, String url,
                       String contactNumber, String password) {
        this.name = name;
        this.adminName = adminName;
        this.email = email;
        this.url = url;
        this.contactNumber = contactNumber;
        this.password = password;
    }

    public Association(String id, String name, String adminName, String email, String url,
                       String contactNumber, String password) {
        this.id = id;
        this.name = name;
        this.adminName = adminName;
        this.email = email;
        this.url = url;
        this.contactNumber = contactNumber;
        this.password = password;
    }

    @DynamoDBHashKey(attributeName = "Id")
    @DynamoDBAutoGeneratedKey
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @DynamoDBAttribute(attributeName="Name")
    public String getName() { return name; }

    public void setName(String name) { this.name = name; }

    @DynamoDBAttribute(attributeName="AdminName")
    public String getAdminName() { return adminName; }

    public void setAdminName(String adminName) { this.adminName = adminName; }

    @DynamoDBAttribute(attributeName="Email")
    public String getEmail() { return email; }

    public void setEmail(String email) { this.email = email; }

    @DynamoDBAttribute(attributeName="Url")
    public String getUrl() { return url; }

    public void setUrl(String url) { this.url = url; }

    @DynamoDBAttribute(attributeName="ContactNumber")
    public String getContactNumber() { return contactNumber; }

    public void setContactNumber(String contactNumber) { this.contactNumber = contactNumber; }

    @DynamoDBAttribute(attributeName="Password")
    public String getPassword() { return password; }

    public void setPassword(String password) { this.password = password; }

}

AssociationRepository.java:-

private AmazonDynamoDBClient getDynamoDBClient(){
        AmazonDynamoDBClient client = new AmazonDynamoDBClient();
        client.setRegion(Region.getRegion(REGION));
        client.setEndpoint(EndPoint);
        return client;
    }

private void deleteAssociation(String id) {
        try {
            DynamoDBConfig dynamoDBConfig = new DynamoDBConfig();
            DynamoDBMapper mapper = new DynamoDBMapper(dynamoDBConfig.getDBClient());
            Association associationToDelete = new Association();
            associationToDelete.setId(id);
            // Delete the item.
            mapper.delete(associationToDelete);
        } catch (Exception exception) {
            System.out.println(exception);
            throw exception;
        }
    }

在此處輸入圖片說明 在此處輸入圖片說明

我收到以下錯誤:-

com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException: No method annotated with interface com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBRangeKey for class class Association

我已經為此搜索了 AWS 文檔,但找不到任何解決此問題的解決方案。你們中有人遇到過這個問題嗎?

問題與我在您的另一篇文章中提到的相同,在 DynamoDB 中,您無法使用不是主鍵的屬性(僅在您的場景中使用分區鍵)處理項目。

此外,要刪除一個項目,必須通過其主鍵來完成,因此在您的情況下是屬性名稱。

嘗試通過設置名稱來執行相同的操作,錯誤不是很具有描述性,因此可能存在另一個潛在問題。 但是,如果您不滿足上述要求,它將永遠無法工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM