基于oid更新记录(字符串)

时间:2017-06-30 17:40:40

标签: android sqlite greendao

我看到一些帖子说使用Long id与另一个键(作为索引和唯一),如果我理解正确,这将基于另一个字段(不是基于id)或更多,我的班级更新:

@Entity(nameInDb = "tbl_company") 
public class Company { 

@Id(autoincrement = true) 
private Long company_id; 

@Index(unique = true) 
@SerializedName(value = "oid") 
public String oid;

给我这个例外 - > UNIQUE约束失败:tbl_company.OID

当然我理解为什么会发生这种情况,但怀疑的是为什么人们会说这应该可以用这个配置来更新索引/唯一的行。

@Entity(nameInDb = "tbl_company",indexes = { 

@Index(value = "oid", unique = true)} ) 
public class Company {
@Id(autoincrement = true) 
private Long company_id; 

@SerializedName(value = "oid") 
public String oid;

错误:Cannot update entity without key - was it inserted before? 我也理解,我应该设置id,但信息来自没有sqlite ID的服务器,只有MongoDB oid:

.update 
.update 
.updateInTx 
.insertOrReplace 
.insertOrReplaceInTx

我知道我可以查询oid以检查它是否存在,但我试图立即对许多对象使用updateInTx。使用查询方法我应该迭代并检查每一个,获取id,在新的上设置id而不是更新,这可能会影响性能(有时服务器可以返回至少500个项目进行迭代)

有没有一种方法可以使用另一个字段而不是ID或我做错更新行? (我不关心id,只是oid很重要,必须是唯一的并且可以更新)

0 个答案:

没有答案