代码之家  ›  专栏  ›  技术社区  ›  Patrick

如何向现有java数据存储实体添加基元属性以避免空指针异常

  •  3
  • Patrick  · 技术社区  · 15 年前

    @Persistent     private long bests = 0;
    

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

    带有kind Player的数据存储实体 关键球员(“帕特里克”)有一个 名为bests的空属性。这个 属性映射到 模特。球员。最佳, 不能接受空值。

    我能做些什么来避免这个问题?比如当字段不存在时默认为零的方法?我想避免使用类Long,并坚持使用原始Long。

    2 回复  |  直到 15 年前
        1
  •  5
  •   Riley Lark    15 年前

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

        2
  •  4
  •   DataNucleus    15 年前

    Long的java类型接受空值,Long不接受空值。现有数据不会有空值,因此为空值。