gpt4 book ai didi

java - 如何更新 GAE 数据存储中的 boolean 值?

转载 作者:搜寻专家 更新时间:2023-11-01 03:14:08 25 4
gpt4 key购买 nike

我有来自 Andreas Borglin 的 tutorial 的以下代码:

@Override
public Model saveModel(Model model) {

System.out.println("model isDone: " + ((Task)model).getDone());
PersistenceManager pm = PMF.get().getPersistenceManager();
Model savedModel = null;

try {
savedModel = pm.makePersistent(model);
} catch (JDOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
pm.close();
}
System.out.println("savedModel isDone: " + ((Task)savedModel).getDone());
System.out.println("model isDone: " + ((Task)model).getDone());
return savedModel;
}

当我创建测试实体时它工作正常,但一旦我想更新它们, boolean 值就不会改变。我保存的“isDone”是“true”,我想把它改成“false”。那是输出:

model isDone: false
savedModel isDone: true
model isDone: false

更改字符串或设置日期都没有问题。该字段定义为:

@Persistent
private boolean isDone = true;

我也试过:

@Persistent
private Boolean isDone;

在这种情况下,isDone 始终为“false”。

最佳答案

不确定您遇到的具体问题,但我建议使用 boolean 对象而不是 boolean 基元类型。也就是说,使用:

@Persistent
private Boolean isDone;

如果您在已经创建了一些实体之后添加一个原始 boolean 字段,则数据存储区在实例化旧对象时会出现问题,因为该字段的值将为 .对于 boolean 值,它们只是默认为“null”,这就足够了。

另外,也许考虑不为 boolean 字段显式定义真值,这可能是数据存储困惑的原因。不过,您必须将字段更改为“isNotDone”之类的内容。

关于java - 如何更新 GAE 数据存储中的 boolean 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3590884/

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