2010-07-24 30 views

回答

5

如果您向模型添加新屬性,那麼當您加載它們時,如果您提供了默認值,則現有實體將具有默認值。儘管如此,他們不會在查詢中顯示該值,直到您獲取並再次存儲它們。

5

您將不得不將該屬性逐個添加到所有現有實體。

您沒有提及您正在使用哪種語言或API。程序的確切細節會因您的情況而有所不同。

通常,最安全的方法是使用不驗證實體的API加載每個實體。在python中,你可以使用Expando模型。在Java中,您可以使用低級數據存儲區API。 (使用JDO或JPA嘗試此操作可能不起作用)您現在需要遍歷所有現有實體。 (嘗試使用新的Mapper API來做到這一點,而不是大驚小怪)。對於每個實體,您將加載它,添加新的屬性,然後將其保存回數據存儲。現在,您可以安全地返回到驗證實體的框架,如JDO或非expando模型。

此方法適用於修改屬性的類型或刪除屬性。

+0

我很滿意提供默認值(正如尼克約翰遜的回答所暗示的)。您的解決方案是否解決了比這種情況更復雜的問題,例如新屬性的價值取決於每個實體實例的具體情況? – Joey 2010-07-26 08:06:05

+0

@Joey尼克的解決方案更容易爲你的情況。更改屬性的類型或刪除屬性將需要更復雜的方法。 – 2010-08-01 16:38:42

相關問題