什么是activeandroid中的mId,什么时候可以为null?

时间:2015-10-06 20:50:02

标签: android orm activeandroid

我正在创建并尝试使用活动的android保存表但由于某种原因该对象无法保存。我得到的错误是

java.lang.NullPointerException: Attempt to invoke virtual method 'long java.lang.Long.longValue()' on a null object reference

在调试反编译的Model.class文件时,我发现执行以下语句时发生异常

(请注意,以下行来自activeandroid的反编译Model.class文件)

long entityId1 = ((Model)e).getId().longValue();

失败并发生上述异常。在catch块中,我观察到对于所有非原始类型字段,mId都是非null,但对于发生异常的字段,mId为null。我试图在网上搜索,但只能找到关于mId的一行。

ActiveAndroid automatically creates another auto-increment ID column. This is mId.

那么为什么在这种情况下不能这样做呢。有人有想法吗?谢谢!!

1 个答案:

答案 0 :(得分:0)

好的,我找到了答案。

从codepath我发现

  

问题在于,这是因为ActiveAndroid需要您保存   所有对象分开。例如,在保存推文之前,请务必   首先保存关联的用户对象。所以当你有推文时   在调用tweet.save()之前引用用户确定user.save()   因为存储用户需要设置本地ID并将其指定为   推文的外键。

因此,在保存对象之前,我必须先保存非原始类型的对象字段。