我正在使用DynamoDB,希望能够将enum
的String
值存储而不是enum
本身。
例如,我有如下enum
:
public enum Source {
BREACH("breach"),
LEAKAGE("leakage");
private final String desc;
Source(String desc) { this.desc = desc; }
public String desc() { return desc; }
}
... 还有这个 "entity":
@DynamoDBTable(tableName = "Alerts")
public final class Alert implements Serializable {
private static final long serialVersionUID = 4012517315640518044L;
@DynamoDBHashKey(attributeName = "AlertId") // Partition Key or Hash Attribute
private String alertId;
@DynamoDBTypeConvertedEnum
@DynamoDBAttribute(attributeName = "Source")
private Source type;
// Constructor(s), Getter(s), Setter(s), ToString, etc...
}
使用
@DynamoDBTypeConvertedEnum
注释,保存的值为BREACH
,但我希望使用breach
。{
"AlertId": { "S": "a083168d-cb23-4ec8-ab80-a1c16955c4b8" },
"Source": { "S": "BREACH" },
...
"CreatedAt": { "S": "2017-05-03T14:07:36.395Z" }
}
有什么线索吗?我曾尝试“转换器”(不是所有的,虽然我无法让它工作),但我认为我最终得为每个enum
类型都做一个转换器,因为它们都不同。
null
时,这种方法存在问题。当它尝试从 DynamoDB 中“查找”实体时,它会失败。有时source
可能存在,也可能不存在。如果该值始终存在,则没有问题,但对于我来说并非如此。 - x80486@DynamoDBTypeConvertedEnum
。无论如何,谢谢! - x80486