问题
我有一个从API调用解析的POJO,看起来像这样
public class Article {
public Long id;
@Expose
@SerializedName("section")
public String section;
@Expose
@SerializedName("title")
public String title;
@Expose
@SerializedName("topics")
public List topics;
@Expose
@SerializedName("media")
public List media;
}
为了最大限度地减少冗余和重复,我希望创建一个这样的模式
@Entity(foreignKeys = {
@ForeignKey(entity = Article.class, parentColumns = "id", childColumns = "articleId"),
@ForeignKey(entity = Topic.class, parentColumns = "id", childColumns = "topicId"),
@ForeignKey(entity = Media.class, parentColumns = "id", childColumns = "mediaId")
}
public class Articles {
@PrimaryKey
public Long articleId;
@ColumnInfo(name = "topic_id")
public Long topicId;
@ColumnInfo(name = "media_id")
public Long mediaId;
}
@Entity
public class Article {
// Left out
}
@Entity
public class Media {
// Left out
}
正如您所看到的,当我调用DAO方法来访问数据库时,我不能直接传入pojo对象(除非我弄错了).我相信我需要将对象转换为与数据库实体模型匹配的对象.
题
Android Framework是否提供了从POJO转换为数据库模型对象的自然方式?有没有办法做到这一点,除了自己手动转换它?
我试过的事情
我知道我可以在DAO接口中的方法内实现转换.但是我必须创建一个新对象并手动设置所有值.
我最初认为typeconverters会工作,但他们似乎转换单个列.