gpt4 book ai didi

java - 如何为 Appengine 上的 JDO 实体中的字段指定默认值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:39:30 26 4
gpt4 key购买 nike

我最近向我的一个不能为空的实体添加了文本字段。我想为其设置一个默认值,以便我在添加该字段之前存储的所有实体都将填充一个空字符串。这可以用 JDO 实现吗?

最佳答案

是的,尽管并不像您预期​​的那么微不足道。

限制

  1. 威尔 time out if ittakes more then 30 seconds ,除非您将其作为任务运行,其中万一它会time out if it takesmore then 10 minutes .
  2. 没有比这更聪明的方法了之后需要更新的实体你can't query on a property thatdoesn't exist .

解决方法

  1. 您需要查看 appengine-mapreduce project到得到一个可以实现的实现完成超过 10 分钟挂钟时间。
  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));
}
}
}

关于java - 如何为 Appengine 上的 JDO 实体中的字段指定默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4403698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com