2016-12-25 49 views
1

堅持多個表對象我有以下3類:GreenDAO(機器人) - 用一個插入

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)矩

​​

正如你可以看到重他們之間lationship是:TvShow --> oneToMany --> Episode --> oneToMany --> Moment

假設我有一個完全填充的TvShow對象(稱爲tvShow),我做了以下這個對象添加到我的數據庫:

final long rowId = daoSession.getTvShowDao().insertOrReplace(tvShow); 

這正確添加tvShow對象TvShow表。 然而,則情節瞬間表是不是在所有的填充。 tvShow對象有幾個Episodes,每集有幾個片刻。我期待另外兩個表格也包含這些數據,但他們沒有。

我在做什麼錯?我是否應該循環播放每個插曲(然後循環播放每個插曲的每個片刻)並手動插入它們? =(

回答

0

也許我會錯,我有同樣的問題,但greenDao不能堅持級聯數據 - 如果你說insertOrReplace(tvShow)它不會持續的劇集列表和時刻列表爲了執行你必須單獨堅持所有數據

例如:

TvShowDao.save(tvShows) OR TvShowDao.insertOrUpdate(tvShows);

EpisodesDao.save(episodes) OR EpisodesDao.save(episodes)

MomentDao.save(moments); OR MomentDao.save(moments);

換句話說,你必須單獨堅持所有數據。

我希望這樣可以幫助你。

+1

感謝您的回答。這就是我最終使用的方法,但是我會留下這個問題,以防有人提出不同的方法。 – Tiago

+0

你可以給我的建議,我有外鍵的問題,在你的情況下,即使我添加了@ToMany(referencedJoinProperty =「tvShowId」)',該集會還沒有TvShow的ID。 – hogar

+0

只需爲自己的伴侶打開自己的SO問題即可。我會看一看。 – Tiago