greenDAO更新和updateInTx无法正常工作

时间:2017-01-21 19:10:30

标签: android greendao greendao3

我正在为我的一个项目使用greenDAO 3.1。由于我需要将我的ID设为x[0:-4:-1] ,因此我决定将其存储为 <?php function myfunction($json, $field, $value) { foreach($json as $key11 => $pro1){ foreach($pro1['columns'] as $key1 => $pro){ foreach($pro as $k => $products){ foreach($products as $key => $product) { if ( $product['settings'][$field] === $value ){ $json[$key11]['columns'][$key1][$k][$key]['settings']['counter_title']="FOUND IT"; break; } } } } } return $json; } $json[15]['columns'][1]['addons'][2]['settings']['number'] ='val1'; $json[15]['columns'][2]['addons'][2]['settings']['number'] = 'val2'; $json[15]['columns'][3]['addons'][2]['settings']['number'] = 'val3'; $json[15]['columns'][4]['addons'][2]['settings']['number'] = 'val4'; $x= myfunction($json, 'number', 'val3'); print_r($x); 。现在问题是我无法使用UUIDByteArray方法更新我的实体,我必须使用updateupdateInTx方法。

有人可以告诉我发生了什么,为什么我不能使用insertOrReplace方法更新?

使用insertOrReplaceInTx方法代替update方法是否有任何不足之处?

这是我的insertOrReplace架构代码:

update

这是我的更新代码:

Entity

1 个答案:

答案 0 :(得分:1)

经过大量的搜索和麻烦,我找到了原因。

由于您无法在BLOB中查询sqlite,因此update方法在id子句中使用的条件超过WHERE,{{1 }}方法找不到我正在寻找的记录。另一方面,当我使用update方法之一时,由于insertOrReplace字段是唯一的,因此无法将多余的id插入到表中,并且它完全将旧记录替换为我正在尝试更新。因此,id方法没有问题,真正的问题是将update用作ByteArray

出于同样的原因,我在使用id方法选择时也遇到了错误。