GreenDao 3.0 Save方法保存数据失败问题

问题描述

使用GreenDao有一阵子了,确实很好用,这次遇见一个问题,使用save方法怎么也无法保存数据,代码如下:

实体类:

GreenDao 3.0 Save方法保存数据失败问题_第1张图片

保存:


GreenDao 3.0 Save方法保存数据失败问题_第2张图片

当调用该方法后数据库中却没有数据

。。。。。。

在确认数据没有问题后,抱着试一试的心态换用Insert()方法,结果就ok了。。。

原因

可是这是为什么呢?

有个伟人说过,当你不知道怎么办的时候,只有一个办法。Read the fucking source code.

save方法如下:


GreenDao 3.0 Save方法保存数据失败问题_第3张图片

是不是很爽?不需要自己去判断插入还是更新,自己就妥妥的把事给办了~~

可是为啥不行呢?再看hasKey(T)方法


看出问题来了么?

相信聪明的你一定看出问题来了,问题就是在hasKey上,由于我的实体中RegID不是自动生成的,而是手动去赋值的,也就是说在调用hasKey方法的时候永远是返回true,调用的是update方法,然而数据中却没有该条记录,更新失败。。。


所以在主键不是自动生成时,使用save方法会有潜在的风险。


结语

写的有点啰嗦,再接再厉吧。

你可能感兴趣的:(GreenDao 3.0 Save方法保存数据失败问题)