插入到多对多关系

时间:2014-06-01 08:40:06

标签: android sqlite greendao

如果我有一个表格Shows,并且我与表Actors有多对多的关系
在插入没有ID({自动生成)的Show时,如果我没有与该节目相关的ID,我该如何插入Actors

这是DaoGenerator代码:

    Entity show = schema.addEntity("Show");
    show.setHasKeepSections(true);
    show.addIdProperty();
    show.addIntProperty("tvdb_id").notNull();
    show.addStringProperty("title");
    show.addIntProperty("year");
    show.addStringProperty("url");
    show.addLongProperty("first_aired");
    show.addStringProperty("country");
    show.addStringProperty("overview");
    show.addIntProperty("runtime");
    show.addStringProperty("status");
    show.addStringProperty("network");
    show.addStringProperty("air_day");
    show.addStringProperty("air_time");
    show.addStringProperty("certification");
    show.addStringProperty("imdb_id");
    show.addIntProperty("tvrage_id");
    show.addLongProperty("last_updated");
    show.addIntProperty("rating");
    show.addIntProperty("votes");
    show.addIntProperty("loved");
    show.addIntProperty("hated");

    Entity actor = schema.addEntity("Actor");
    actor.addIdProperty();
    actor.addStringProperty("name");
    actor.addStringProperty("character");
    actor.addStringProperty("image");

    Property showId = actor.addLongProperty("show_id").notNull().getProperty();
    ToMany showToActor= show.addToMany(actor, showId);
    showToActor.setName("actors");

2 个答案:

答案 0 :(得分:1)

插入对象时会自动生成ID。

所以你必须在添加演员之前插入节目。

答案 1 :(得分:1)

您可以在该实体上调用refresh(),当前副本将更新,因此其ID也是如此。

然后你应该把这个showId设置为每个演员的节目ID。

show.refresh();
for (Actor actor : actors)
    actor.setShowId(show.getId());


actorDao.insertAllInTx(actors);