我有一个像这样的枚举类 -
public enum FeedbackStatus {
@JsonProperty("unprocessed")
UNPROCESSED("unprocessed"),
@JsonProperty("arrived")
ARRIVED("arrived"),
@JsonProperty("performed")
PERFORMED("performed"),
@JsonProperty("cancelled")
CANCELLED("cancelled"),
@JsonProperty("removed")
REMOVED("removed"),
@JsonProperty("no-show")
NO_SHOW("no-show"),
@JsonProperty("cancel-at-door")
CANCEL_AT_DOOR("cancel-at-door");
private static final FeedbackStatus[] myEnumValues = FeedbackStatus.values();
private final String fieldDescription;
private FeedbackStatus(String value) {
this.fieldDescription = value;
}
public static FeedbackStatus fromString(String string) {
if (!TextUtils.isEmpty(string)) {
for (FeedbackStatus feedbackStatus : myEnumValues) {
if (feedbackStatus.getString().equalsIgnoreCase(string)) {
return feedbackStatus;
}
}
}
throw new IllegalArgumentException("No constant with text " + string + " found");
}
public String getString() {
return this.fieldDescription;
}
}
我需要使用GreneDAO在SQLITE数据库中存储对象feedback
,但该对象是枚举,因此我无法存储它。对象就像 -
private FeedbackStatus feedback;
如何将其存储为String?
答案 0 :(得分:0)
用于前。 CANCELLED.value?存储数据时?还有ENUM.toString()。您可以将其存储为String,然后使用String将数据恢复到Enum方法。
答案 1 :(得分:0)
您无法将enums
存储在数据库中,因为enumns
是Java
个实体,因此对于枚举,您需要将其等效值存储为String
或int
等。
您可以获得value
enum
的{{1}},而不是将database
作为Strings
存储:
String PERFORMED = PERFORMED.value;
String CANCELLED= CANCELLED.value;
String REMOVED= REMOVED.value;
String NO_SHOW= NO_SHOW.value;
String CANCEL_AT_DOOR= CANCEL_AT_DOOR.value;
有关枚举的更多详情,请参阅Java Docs here
所以这里实际上你的数据模型还可以,但是在数据库中保存枚举时你只需要一个带枚举值的列,并且在插入时你需要从枚举转换为它的字符串值,并且在从db读取时,你需要构建来自该字符串的枚举。
希望它有所帮助!!
答案 2 :(得分:0)