у меня 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.)