Android greenDao@ToMany关系不工作,返回0

Android greenDao@ToMany关系不工作,返回0,android,database,relational-database,greendao,Android,Database,Relational Database,Greendao,我和绿刀和@ToMany的关系有问题。Drning会话当我插入DB时,我可以很容易地获得@ToMany关系。我的问题发生在重新启动应用程序后,返回的列表为空 每日一班 @Entity public class Daily extends BaseObservable implements Parcelable { @Id(autoincrement = true) private Long id; @Unique private String tag; @SerializedName("s

我和绿刀和@ToMany的关系有问题。Drning会话当我插入DB时,我可以很容易地获得@ToMany关系。我的问题发生在重新启动应用程序后,返回的列表为空

每日一班

@Entity
public class Daily extends BaseObservable implements Parcelable {

@Id(autoincrement = true)
private Long id;

@Unique
private String tag;

@SerializedName("summary")
@Expose
private String summary;

@SerializedName("icon")
@Expose
private String icon;

@SerializedName("data")
@Expose
@ToMany(joinProperties = {
        @JoinProperty(name = "tag", referencedName = "dataTag")})
@OrderBy("id ASC")
private List<DailyData> data = new ArrayList<DailyData>();
我执行数据库插入的地方(我使用rxjava2获取模型)。我一直在尝试以不同的顺序插入,但也没有效果

public void insertCityToDatabase(City city) {

    city.setName(cityLatLngList.get(getPosition()).getResult().getName());

    city.getDailyWithoutId().setTag(city.getName());
    city.getHourlyWithoutId().setTag(city.getName());

    for (HourlyData hourlyData : city.getHourlyWithoutId().getHourlyDataWithoutId()) {
        hourlyData.setDataTag(city.getName());
        daoSession.insert(hourlyData);
    }
    for (DailyData dailyData : city.getDailyWithoutId().getDataWithoutId()) {
        dailyData.setDataTag(city.getName());
        daoSession.insert(dailyData);
    }

    daoSession.insert(city.getHourlyWithoutId());
    daoSession.insert(city.getDailyWithoutId());
    daoSession.insert(city.getCurrentlyWithoutId());

    long id = daoSession.insert(city);

    eventBus.post(new NewCity(id));
}
这是我的数据库

我也尝试过通过 @但结果是相同的


你知道为什么@ToMany关系不起作用吗?

我刚刚解决了这个问题。你的每日课程:

@SerializedName("data")
@Expose
@ToMany(joinProperties = {
    @JoinProperty(name = "tag", referencedName = "dataTag")})
@OrderBy("id ASC")
private List<DailyData> data = new ArrayList<DailyData>();
这意味着Daily.class中的字段标记与DailyData.class中的字段dataTag有关系。因此,当您插入数据库时:

for (DailyData dailyData : city.getDailyWithoutId().getDataWithoutId()){
    dailyData.setDataTag(city.getTag());//
    daoSession.insert(dailyData);
}

我用这种方法解决了这个问题。

你解决了吗?我也有同样的问题不,因为这个问题,我被迫从绿岛搬到了王国。有一次,我试着在新项目中测试greenDao,它可以正常工作,但我不知道为什么它不能在这里工作。似乎你应该在DailyData中有一个每日属性。这种方式类似于JPA。我这样做了,但它说:“Dataz不是一个实体,但它是为类中的@ToMany关系引用的(字段:data)”;;;;;问题:
@Entity
public class DailyData extends BaseObservable implements Parcelable {

@Id(autoincrement = true)
private Long id;

@NotNull private String dataTag;
... [rest of the code]
for (DailyData dailyData : city.getDailyWithoutId().getDataWithoutId()){
    dailyData.setDataTag(city.getTag());//
    daoSession.insert(dailyData);
}