如何将原始属性添加到现有java数据存储区实体以避免空指针异常

Pat*_*ick 3 java google-app-engine jdo google-cloud-datastore

我在我的gae数据存储区中有一个类型的现有实体,我想要添加一个原始类型为"long"的新原始属性:

@Persistent     private long bests = 0;
Run Code Online (Sandbox Code Playgroud)

当我这样做,当我尝试加载显然没有设置此属性的现有实体时,我得到:

java.lang.NullPointerException:具有类型Player和密钥播放器("patrick")的数据存储区实体具有名为bests的null属性.此属性映射到model.Player.bests,它不能接受空值.

我该怎么做才能避免这个问题?像字段不存在时默认为零的方法?我想避免使用类Long,并坚持使用原始long.

Ril*_*ark 5

您可以暂时使用Long,将所有实体更新为零值,然后将该字段更改为long.或者,将所有数据读入某个文件,删除所有实体,然后使用新的长字段将其写回(小心所有权链接被破坏).