猿问

DynamoDB 继承无映射父哈希

我有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")


问题是,当我尝试保存 a 时Cat,出现错误:


Cat: does not map HASH key on model

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


我可以解决移动注释的问题:@DynamoDBTable(tableName = "Cat")从类Cat到超类,它可以将Cat. 我还没有测试这是否会导致问题Dog,但我不这么认为,因为它会被覆盖 @DynamoDBTable(tableName = "Dog")


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


qq_花开花谢_0
浏览 143回答 1
1回答

繁花不似锦

将此注释放在超类上:@DynamoDBDocumentpublic abstract class Animal{//...}
随时随地看视频慕课网APP

相关分类

Java
我要回答