2015-10-06 40 views
0

我创建并尝试使用活动的android保存表,但由于某种原因该对象无法保存。我得到的错误是activeandroid中的mId是什么以及它何时可以为null?

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

在调试反编译Model.class文件我认为,虽然执行以下语句

(请注意,下面的线是从反编译Model.class发生异常Activeandroid的文件)

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

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

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

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

回答

0

好的,我找到了答案。

从代码路径,我发现

的问题是,这是因为ActiveAndroid需要您单独保存 所有对象。例如,在保存推文之前,请确保首先保存关联的用户对象 。因此,在您拨打tweet.save() 之前,您有推文 引用用户请务必使用user.save(),因为存储用户需要设置本地ID并将其分配为 推文的外键。

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

相关问题