2011-02-28 43 views
2

我的問題是非常明顯的:變化的實體類與開發應用程序引擎問題

  1. 我有一個名爲TaskDescription類這相當於在App Engine數據存儲的一種(表)。 然後我將它重命名爲TaskContent,並且所有存儲的數據現在似乎都已丟失(因爲類名是所謂的kind名稱是存儲數據路徑的一部分)。
  2. 我意識到,每次我重命名任何實體類中的單個字段時,都會發生幾乎相同的問題。

在這個世界上沒有什麼是完美的,我懷疑它有可能從頭開始創建所有絕對正確的實體,並且在此之後從不改變它們。

那麼,如何處理這個問題呢?

+0

你在使用什麼API? JDO? JPA?低級別的? – 2011-02-28 15:56:10

+0

@Peter Knego:objectify – Roman 2011-02-28 16:54:41

回答

2

兩種方式:

  1. 離開實體,因爲它們並更改映射:在客觀化,你可以設置entity to class name mapping:例如@Entity(名稱= 「實體名稱」)。

  2. 更改數據存儲中的實體:由於數據存儲是無模式的,因此無法通過簡單的命令完成此操作。對於實體名稱更改,您需要創建一個新實體,複製所有屬性並刪除舊實體。人們通常使用MapReduce jobs to perform datastore maintenance。這裏是MapReduce for java

對於字段名稱的變化,objectify有明確的support for migrating schemas(沒有模式,但他們仍然這樣調用它)。

+1

@謝謝,非常有用的信息。 – Roman 2011-02-28 17:43:18

相關問題