添加子实体时更新父实体(Greendao)

时间:2016-02-19 14:55:12

标签: android one-to-many greendao

我在我的Android应用程序中使用greendao,并且需要刷新列表视图中的某个项目。

我有一个与“出口”有一对多关系的实体“活动”

为了在添加新的“导出”时更新“活动”,我按http://greenrobot.org/greendao/documentation/relations/#Resolving_and_Updating_To-Many_Relations

中的描述进行操作
Exports ex = new Exports();
ex.setActivityId(activityEntry.getId());
//DOING something...
exportsDao.insert(ex);
List<Exports> exportList = activityEntry.getExportsList();
exportList.add(ex);

然而,这给了我java.util.AbstractList.add(AbstractList.java:404)的java.lang.UnsupportedOperationException

我做错了什么?

2 个答案:

答案 0 :(得分:3)

刚刚遇到同样的问题 - 你现在可能已经解决了这个问题,但这可以作为最新用户的参考(截至2016年4月25日)

最近修复了错误修正(今年年初),如图所示

https://github.com/greenrobot/greenDAO/issues/287 https://github.com/greenrobot/greenDAO/pull/288

从上述情况来看,如果有人遇到同样的问题,问题很可能就是下列问题之一

  1. 您没有最新的greendao依赖版本(在最近的修复之前)
  2. 或者你就像我一样从github中拉出greendao项目,并且无意识地从README文件中复制了gradle依赖版本 - 看起来如下所示

    scales

    与官方网站上的gradle依赖关系不同。

    compile 'de.greenrobot:greendao:2.1.0'
    

答案 1 :(得分:0)

从您引用的页面中,您已经完成了无序的步骤。按照此顺序中的步骤操作,看看它是否解决了问题。

  

这是如何插入属于to-many的新实体   关系:

     
      
  1. 获取to-many Java List(之前必须完成此操作)   坚持新实体,因为我们不知道我们是否得到了缓存   为了新的结果。像这样,我们知道它现在被缓存了。)
  2.   
  3. 创建一个新的实体对象(多方面)
  4.   
  5. 将新实体的外国财产设置为目标实体
  6.   
  7. 使用insert
  8. 保留新对象   
  9. 将新对象添加到to-many Java List
  10.