1
我想創建一個一般DynamoDB模式,應當由一些DynamoDb表類的共享:力覆蓋
@DynamoDBTable(tableName = "please_dont_create_me!")
public abstract class Schema {
@DynamoDBHashKey
private String id;
private String value;
/* setters and getters .. */
}
@DynamoDBTable(tableName = "table_1")
public class FirstTable extends Schema {
}
// Woops, I forgot to annotate with @DynamoDBTable
public class SecondTable extends Schema {
}
保存的FirstTable
工程實例預期:
FirstTable ft = new FirstTable();
ft.setId("occupation");
ft.setValue("artist");
mapper.save(ft); // Saves (occupation, artist) to 'table_1'
現在節省SecondTable
,我忘了跟@DynamoDBTable
註釋:
SecondTable st = new SecondTable();
st.setId("hobby");
st.setValue("drawing");
mapper.save(st); // Saves (hobby, drawing) to 'please_dont_create_me!'
是否有可能以這種方式創建Schema
以避免這種情況?
我的想法:
Schema
必須@DynamoDBTable
進行註釋,否則它定義不拿起(試圖保存FirstTable時,一個異常被拋出關於丟失hashKey,例如) 領域
- tableName是必填項和非null。我可以將它設置爲一個無效的表名(例如,在名稱中使用特殊字符),但..這是一個非常冒險的解決方案
- 有
Schema
作爲接口,而不會真的工作*。主要缺陷是@DynamoDBHashKey
和其他字段註釋不被繼承。
*我還沒有實際使用的接口