我有以下3个班级:
1)TvShow
@Entity
public class TvShow{
@Id
private String uuid;
private String url;
private String title;
...
@ToMany(referencedJoinProperty = "tvShowUuid")
private List<Episode> episodes;
2)剧集
@Entity
public class Episode{
@Id
private String uuid;
@ToMany(referencedJoinProperty = "episodeUuid")
private List<Moment> moments;
//FK
private String tvShowUuid;
3)时刻
@Entity
public class Moment{
@Id
private String uuid;
...
private String episodeUuid;
正如您所看到的,他们之间的关系是:TvShow --> oneToMany --> Episode --> oneToMany --> Moment
假设我有一个完全填充的TvShow对象(称为tvShow),我正在执行以下操作将该对象添加到我的数据库中:
final long rowId = daoSession.getTvShowDao().insertOrReplace(tvShow);
这正确地将tvShow对象添加到TvShow表。 然而 , Episode 和 Moment 表根本不会填充。 tvShow对象有几个剧集,每集都有几个片段。我期待其他2个表也包含这些数据,但它们没有。
我做错了什么?我是否应该循环播放每一集(然后循环播放每集的每个片刻)并手动插入它们? =(
答案 0 :(得分:0)
也许我会错,我遇到了同样的问题,但是greenDao无法持久保存级联数据 - 如果你说insertOrReplace(tvShow)
它将不会保留剧集列表和时刻列表。为了执行该操作,您必须单独保留所有数据。
例如:
TvShowDao.save(tvShows)
或TvShowDao.insertOrUpdate(tvShows);
和
EpisodesDao.save(episodes)
或EpisodesDao.save(episodes)
和
MomentDao.save(moments);
或MomentDao.save(moments);
换句话说,您必须单独保留所有数据。
我希望这能帮助你。