1

我有以下 3 个课程:

1) 电视节目

@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 表中。但是情节时刻表根本没有填充。tvShow 对象有几个情节,每个情节都有几个时刻。我期待其他 2 个表也包含该数据,但它们没有。

我究竟做错了什么?我是否应该循环遍历每一集(然后循环遍历每一集的每个时刻)并手动插入它们?=(

4

1 回答 1

0

也许我会错,我也有同样的问题,但是 greenDao 不能持久化级联数据 - 如果你说它insertOrReplace(tvShow)不会持久化情节列表和时刻列表。为了执行此操作,您必须单独保存所有数据。

例如:

TvShowDao.save(tvShows)或者TvShowDao.insertOrUpdate(tvShows);

EpisodesDao.save(episodes)或者EpisodesDao.save(episodes)

MomentDao.save(moments);或者MomentDao.save(moments);

换句话说,您必须单独保存所有数据。

我希望这对你有所帮助。

于 2017-02-24T09:47:59.017 回答