我最近将Text字段添加到我的某个不能为null的实体中。我想为它设置一个默认值,这样我添加字段之前存储的所有实体都将填充一个空字符串。 JDO可以实现吗?
答案 0 :(得分:2)
是的,虽然不像你想象的那样琐碎。
限制
变通办法
代码
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));
}
}
}