我有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的表中。)
将此注释放在超类上:
@DynamoDBDocument
public abstract class Animal{
//...
}