DynamoDB继承没有映射父哈希

问题描述 投票:1回答:1

我有3个班:

public abstract class Animal{
    private String id;
    private String name;

    @DynamoDBHashKey(attributeName = "Id")
    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;
    }
}

然后是一类Cat:

@DynamoDBTable(tableName = "Cat")
public class Cat extends Animal{
    private String purr;
    @DynamoDBAttribute(attributeName = "Purr")
    public String getPurr() {
        return purr;
    }
    public void setPurr(String purr) {
        this.purr = purr;
    }
}

和类似的类Dog扩展Animal并使用另一个名为Dog的表:@DynamoDBTable(tableName = "Dog")

问题是,当我尝试保存Cat时,我收到错误:

Cat: does not map HASH key on model

Cat应该有他的超类的哈希键。

我可以解决移动注释:@DynamoDBTable(tableName = "Cat")从类Cat到超类,它可以保存Cat。我仍然没有测试过这是否会给Dog带来问题,但我不这么认为,因为它会被@DynamoDBTable(tableName = "Dog")所覆盖

但这个解决方案对我来说似乎很难看。有更好的解决方案吗? (我会考虑将表Dog和Cat合并到一个名为Animal的表中。)

java amazon-web-services amazon-dynamodb
1个回答
4
投票

将此注释放在超类上:

@DynamoDBDocument
public abstract class Animal{
//...
}
© www.soinside.com 2019 - 2024. All rights reserved.