所以我保存了一個包含MyEnum值的JDO實體。如果使用JDO實體保存枚舉值,我可以刪除枚舉值嗎?
public enum MyEnum {
MyValue1,
MyValue2,
MyValue3;
}
但是現在我需要刪除至少一個枚舉值。由於存儲的值不再有效,這會導致JDO查詢崩潰嗎?
感謝您的幫助。
所以我保存了一個包含MyEnum值的JDO實體。如果使用JDO實體保存枚舉值,我可以刪除枚舉值嗎?
public enum MyEnum {
MyValue1,
MyValue2,
MyValue3;
}
但是現在我需要刪除至少一個枚舉值。由於存儲的值不再有效,這會導致JDO查詢崩潰嗎?
感謝您的幫助。
JDO最有可能使用Enum.valueOf(class, string)
實例枚舉。所以在不支持的值的情況下,它將產生IllegalArgumentException
。
不能添加或刪除運行時枚舉,這是一個Java的事情,而不是GAE。
OP不問這個問題。他問是否刪除枚舉值(然後編譯和部署)會產生一個錯誤,因爲數據庫中可能沒有映射到更改後的枚舉值。 – 2012-08-10 13:38:04
就像彼得說,從一個枚舉值移除將拋出一個錯誤。但是我只保留了舊的值並創建了一個方法getValues(),它返回一個當前值的數組,並使用它們。隨着用戶使用新版本,舊值將自動更新,並最終可以安全地刪除。
是的,只要他儲存它作爲一個字符串,而不是一個整數,http://code.google.com/p/datanucleus-appengine/source/browse/trunk/src/com/google/appengine/datanucleus/TypeConversionUtils的.java#376 – DataNucleus 2012-08-10 15:26:38