我有一个google应用程序引擎应用程序,我想在其中扩展我的一个实体定义。如何确保已存在的实体对象正确初始化新字段?下一次查询现有对象时,会不会简单地使用默认值?我想添加一个StringListProperty。
发布于 2010-07-24 21:35:04
如果将新属性添加到模型中,则现有图元在加载它们时将具有其缺省值(如果提供了缺省值)。但是,直到您获取它们并再次存储它们时,它们才会出现在对该值的查询中。
发布于 2010-07-24 21:02:56
您必须将该属性逐个添加到所有现有实体中。
您没有提到您正在使用哪种语言或API。该过程的确切细节将根据您的情况而有所不同。
通常,最安全的方法是使用不验证实体的API加载每个实体。在python中,您可以使用Expando模型。在java中,您可以使用低级数据存储API。(尝试使用JDO或JPA可能不起作用)您现在需要遍历所有现有实体。(尝试使用新的Mapper应用程序接口可以相对轻松地完成此任务)。对于每个实体,您将加载它,添加您的新属性,然后将其放回/保存到数据存储。现在,您可以安全地返回到验证实体的框架,如JDO或非扩展模型。
此方法适用于修改属性的类型或删除属性。
https://stackoverflow.com/questions/3326789
复制