如何设置';int';在应用程序引擎数据存储中,Java模型属性是否为其原始未设置状态,而不是为零?

如何设置';int';在应用程序引擎数据存储中,Java模型属性是否为其原始未设置状态,而不是为零?,java,google-app-engine,jdo,Java,Google App Engine,Jdo,表示数据存储实体的Java模型类的一个属性由int值表示: int trackedUserId; 此值在应用程序执行过程中设置为特定用户id。然后在其他点上,我想将它重置为由空值表示的原始未设置状态。但我能看到的重置它的唯一方法是将它设置为零。JDO中是否有其他方法将属性重置为未设置状态 Integer trackedUserId; trackedUserId = 1; //voodoo happens //so you reset to null trackedUserId = (Integ

表示数据存储实体的Java模型类的一个属性由int值表示:

int trackedUserId;
此值在应用程序执行过程中设置为特定用户id。然后在其他点上,我想将它重置为由空值表示的原始未设置状态。但我能看到的重置它的唯一方法是将它设置为零。JDO中是否有其他方法将属性重置为未设置状态

Integer trackedUserId;
trackedUserId = 1;
//voodoo happens
//so you reset to null
trackedUserId = (Integer) null;
正如您所说,它的原始状态由null值表示,因此如果您希望它再次为null,只需将其设置为null即可


正如您所说,它的原始状态由一个null值表示,因此如果您希望它再次为null,只需将其设置为null。

int
是一个原始值,因此不能将其设置为
null
。根据JDO文档:

如果将数据存储实体加载到 对象,并且没有属性 对于对象的某个字段和 字段的类型是可为空的 单值类型,字段设置为 无效的将对象保存回时 数据存储,空属性 在数据存储中设置为 空值。如果该字段不是 可为空的值类型,正在加载实体 没有相应的属性 抛出异常。这不会发生 如果实体是从 与用于重新创建 实例,但如果JDO 类更改,或者如果实体 使用低级API创建 而不是JDO


如果您正在创建一个包含
int
字段的新记录,并且没有指定值,那么它将具有Java对此类字段的默认值,即0。

int
是一个基本值,因此不能设置为
null
。根据JDO文档:

如果将数据存储实体加载到 对象,并且没有属性 对于对象的某个字段和 字段的类型是可为空的 单值类型,字段设置为 无效的将对象保存回时 数据存储,空属性 在数据存储中设置为 空值。如果该字段不是 可为空的值类型,正在加载实体 没有相应的属性 抛出异常。这不会发生 如果实体是从 与用于重新创建 实例,但如果JDO 类更改,或者如果实体 使用低级API创建 而不是JDO


如果您正在创建一个新记录,其中包含一个
int
字段,并且没有指定值,那么它将具有Java对此类字段的默认值,即0。

太糟糕了
trackedUserId=null
在Java中是非法语句。如果将
int
替换为
Integer
,则可以将其设置为null。太糟糕了
trackedUserId=null
在Java中是非法语句。如果将
int
替换为
Integer
,则可以将其设置为null。嗯,在Java中,“int”永远不是“unset”。另一方面,整数可以是.Errm,在Java中,“int”永远不会是“unset”。另一方面,整数可以是。