greendao 左加入困境

Posted

技术标签:

【中文标题】greendao 左加入困境【英文标题】:greendao Left join dilemma 【发布时间】:2012-12-12 12:48:27 【问题描述】:

我正在使用greenDao,我需要从几个类似于left-join funcionality的表中提取数据。这是我的模式生成器的引用:

private static void genRetailers(Schema schema) 
    // create retailer entity
    Entity retailerEntity = schema.addEntity("Retailer");
    retailerEntity.addIdProperty().notNull();
    retailerEntity.addStringProperty("title");

    Entity shopEntity = schema.addEntity("Shop");
    shopEntity.addIdProperty().notNull();
    shopEntity.addStringProperty("address");
    Property retailerId = shopEntity.addLongProperty("retailerId")
            .getProperty();
    // (1) Retailer < - > (*) Shop
    retailerEntity.addToMany(shopEntity, retailerId);

当我这样做时:

    return (ArrayList<Retailer>) mDaoSession.getRetailerDao()
                .queryBuilder().list();

我只获取 Retailer 表本身的内容,但我还需要为空的 Shop 实体值。只有在我致电getShops() 之后,实体才会被填满。我需要在第一次查询时填写实体。是怎么做到的?

谢谢。

【问题讨论】:

您描述了 greenDAO 的工作原理。关系在第一次访问时被延迟解析。你没有说明的是你想要实现的目标,以及为什么不能使用标准关系来完成。 【参考方案1】:

使用 queryDeep 方法:

return mDaoSession.getRetailerDao().queryDeep(null);

【讨论】:

多解释一点也无妨。而且这种方法似乎不再可用了。

以上是关于greendao 左加入困境的主要内容,如果未能解决你的问题,请参考以下文章

Android GreenDAO3.0——介绍

greenDao基础用法

GreenDao操作本地db文件(使用greendao 新版3.2.2 )

GreenDao在Android项目中的实践总结

GreenDao使用

android greenDao使用