如何在greenDAO ORM中关联两个以上的表?

时间:2016-08-10 13:58:32

标签: android greendao

我正在处理一个我希望保存列表列表的应用程序。我完全保存了所有数据,但是当我获取数据时,这种情况就不存在了。

例如,我想要保存一本有很多章节的章节,章节有很多段落,每个段落都有一组问题,一个问题有一个问题一个答案和四个选项。

我为章节,段落,问题制作了所有表格的模式,并且也很好地将它们联系起来,但是当我保存数据时,它保存在单独的表中但不是相对的。像章节列表只包含章节名称和段落列表只包含段落和类似的问题。

所以我的问题是如何将它们联系起来?例如,我有一个包含章节等的书籍列表。 提前谢谢。

Entity course = schema.addEntity("Course");
course.setTableName("Courses");
course.addIdProperty().primaryKey().autoincrement();
course.addStringProperty("course_name").notNull();
course.addStringProperty("course_id").notNull();

//chapter schema
Entity chapter = schema.addEntity("ChapterList");
chapter.setTableName("Chapters");
chapter.addIdProperty().primaryKey().autoincrement();
chapter.addStringProperty("chapter_name").notNull();

//relation chapter to course
Property chapterDate = chapter.addDateProperty("cahpter_add_date").getProperty();
Property courseId = chapter.addLongProperty("course_id").getProperty();
chapter.addToOne(course,courseId);

//relation course to chapter
ToMany courseToChapter = course.addToMany(chapter, courseId);
courseToChapter.setName("chapter_list");
courseToChapter.orderAsc(chapterDate);

这是表创建和此代码保存数据的代码。

public static void getCourseFromBackend(ParseObject p) {
    DaoSession daoSession = WWApplication.getDaoSession();
    CourseDao courseDao = daoSession.getCourseDao();
    Course course = new Course();

    String courseId = p.getString(Constants.ParseKeys.COURSE_ID);
    course.setCourse_name(p.getString(Constants.ParseKeys.COURSE_NAME));
    course.setCourse_id(courseId);
    List<ParseObject> chapterList = p.getList(Constants.ParseKeys.CHAPTER_LIST);
    if (chapterList != null) {
        for (ParseObject bChapter : chapterList) {
            saveChapterFromBackend(bChapter, course, courseId);
        }
    }
    courseDao.insert(course);
}

public static void saveChapterFromBackend(ParseObject object, Course course, String courseId){
    DaoSession daoSession = WWApplication.getDaoSession();
    ChapterListDao chapterListDao = daoSession.getChapterListDao();
    ChapterList chapter = new ChapterList();

    String chapName = object.getString(Constants.ParseKeys.CHAPTER_NAME);
    chapter.setChapter_name(chapName);

    chapter.setCourse(course);
    chapter.setCourse_id(course.getId());
    chapterListDao.insert(chapter);
}

但是当我检索数据时chapterList为空。问题出在哪里:保存还是取货?

0 个答案:

没有答案