- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我对 greenDao 和 @ToMany 关系有疑问。当我插入数据库时,我可以很容易地获得@ToMany 关系。我的问题发生在我重新启动我的应用程序后,返回的列表是空的。
Daily.class
@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>();
DailyData.class
@Entity
public class DailyData extends BaseObservable implements Parcelable {
@Id(autoincrement = true)
private Long id;
@NotNull private String dataTag;
... [rest of the code]
我正在插入数据库的地方(我正在使用 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));
}
这是我的数据库 Daily and DailyData , debuger Android Studio
我也试过做@ToMany关系@ToMany(referencedJoinProperty = "id") 但结果是一样的。
知道为什么 @ToMany 关系不起作用吗?
最佳答案
我刚刚解决了这个问题。你的 Daily.class:
@SerializedName("data")
@Expose
@ToMany(joinProperties = {
@JoinProperty(name = "tag", referencedName = "dataTag")})
@OrderBy("id ASC")
private List<DailyData> data = new ArrayList<DailyData>();
和 DailyData.class:
@Entity
public class DailyData extends BaseObservable implements Parcelable {
@Id(autoincrement = true)
private Long id;
@NotNull private String dataTag;
... [rest of the code]
这意味着Daily.class中的字段标签与DailyData.class中的字段dataTag有关系。所以当你插入数据库时:
for (DailyData dailyData : city.getDailyWithoutId().getDataWithoutId()){
dailyData.setDataTag(city.getTag());//
daoSession.insert(dailyData);
}
我是这样解决问题的。
关于android - greenDao @ToMany 关系不起作用,返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41164754/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!