关于GreenDao 一对多关系中 新增数据的问题

在一对一或一对多关系中, 如果新建一个对象 其中的子对象是不会创建的 ,GreenDao 为我们提供了相应的get方法 

例如 

@Generated(hash = 1538855097)
public Person getPerson() {
    String __key = this.personInfoId;
    if (person__resolvedKey == null || person__resolvedKey != __key) {
        final DaoSession daoSession = this.daoSession;
        if (daoSession == null) {
            throw new DaoException("Entity is detached from DAO context");
        }
        PersonDao targetDao = daoSession.getPersonDao();
        Person personNew = targetDao.load(__key);
        synchronized (this) {
            person = personNew;
            person__resolvedKey = __key;
        }
    }
    return person;
}

大家可以看到 需要设置daoSession 

我测试了下

/**
 * called by internal mechanisms, do not call yourself.
 */
@Generated(hash = 1722282747)
public void __setDaoSession(DaoSession daoSession) {
    this.daoSession = daoSession;
    myDao = daoSession != null ? daoSession.getPersonInfoDao() : null;
}

手工设置了下DaoSession 是可以在创建对象的, 其实也不算是创建对象而是在数据库中查不到相应的数据。

注释上说 不要我们自己去创建, 而是在greendao 查询的时候由greendao 来确定的

所以我们可以 在构造方法中加入 

recordChoice = new ArrayList<>();

这样来初始化数据 

但是这样greendao 也会访问, 而报错, 然后加上 

@Keep

就万事大吉了

转载于:https://my.oschina.net/u/594160/blog/848381

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值