【发布时间】:2010-12-09 22:15:40
【问题描述】:
我最近向我的一个不能为空的实体添加了文本字段。我想为其设置一个默认值,以便在添加该字段之前存储的所有实体都将填充一个空字符串。 JDO 可以做到这一点吗?
【问题讨论】:
标签: java google-app-engine jdo
我最近向我的一个不能为空的实体添加了文本字段。我想为其设置一个默认值,以便在添加该字段之前存储的所有实体都将填充一个空字符串。 JDO 可以做到这一点吗?
【问题讨论】:
标签: java google-app-engine jdo
是的,尽管没有您想象的那么简单。
限制
解决方法
代码
void updateNullBarField() {
final Text DEFAULT_BAR = new Text("bar");
PersistenceManagerFactory pmfInstance = JDOHelper
.getPersistenceManagerFactory("transactions-optional");
PersistenceManager pm = pmfInstance.getPersistenceManager();
Query query = pm.newQuery(Foo.class);
@SuppressWarnings("unchecked")
Collection<Foo> foos = pm.detachCopyAll((List<Foo>) query.execute());
for (Foo foo : foos) {
if (foo.bar == null) {
foo.bar = DEFAULT_BAR;
pm.detachCopy(pm.makePersistent(foo));
}
}
}
【讨论】: