Java 如何更新GAE数据存储中的布尔值?

Java 如何更新GAE数据存储中的布尔值?,java,google-app-engine,google-cloud-datastore,Java,Google App Engine,Google Cloud Datastore,我有Andreas Borglin的以下代码: 当我创建测试实体时,它可以正常工作,但是一旦我想要更新它们,布尔值就不会改变。我保存的“isDone”是“true”,我想将其更改为“false”。这就是输出: model isDone: false savedModel isDone: true model isDone: false 更改字符串或设置日期没有问题。该字段定义为: @Persistent private boolean isDone = true; 我还尝试: @Persis

我有Andreas Borglin的以下代码:

当我创建测试实体时,它可以正常工作,但是一旦我想要更新它们,布尔值就不会改变。我保存的“isDone”是“true”,我想将其更改为“false”。这就是输出:

model isDone: false
savedModel isDone: true
model isDone: false
更改字符串或设置日期没有问题。该字段定义为:

@Persistent
private boolean isDone = true;
我还尝试:

@Persistent
private Boolean isDone;
在这种情况下,isDone总是“false”。

尝试使用

@持久的

私有布尔isDone=Boolean.True


我以前使用过Boolean,它对我很有用。

不确定您遇到的具体问题,但我建议在Boolean基元类型上使用Boolean对象。即使用:

@Persistent
private Boolean isDone;
如果在创建某些实体后添加基本布尔字段,则数据存储在实例化旧对象时会出现问题,因为该字段的值将被忽略。对于Boolean,它们只是默认为“null”,这就足够了

也可以考虑不显式地定义布尔字段的真值,这可能是数据存储混乱的原因。不过,您必须将字段改为“isNotDone”

@Persistent
private Boolean isDone;