Android房间数据库一对一关系
我想用Android Room实现Android房间数据库一对一关系,android,database,android-sqlite,android-room,Android,Database,Android Sqlite,Android Room,我想用Android Room实现课程和课程媒体之间的关系 数据库设计: 我知道这些列可能都在课程表中,但我希望在不删除元信息的情况下按时间添加/更新课程。因此,我认为在一个单独的表中提取元信息可能是一个解决方案 @Data @Entitity public class Course { @PrimaryKey @NonNull public String uuid; public String name; } @Data @Entitity publ
课程
和课程媒体
之间的关系
数据库设计:
我知道这些列可能都在课程表中,但我希望在不删除元信息的情况下按时间添加/更新课程。因此,我认为在一个单独的表中提取元信息可能是一个解决方案
@Data
@Entitity
public class Course {
@PrimaryKey
@NonNull
public String uuid;
public String name;
}
@Data
@Entitity
public class Meta {
@PrimaryKey
@NonNull
public String courseUuid;
public boolean isFavorite;
}
@Data
public class CourseAWithMeta {
@Embedded
Course course;
@Relation(
parentColumn = "uuid",
entityColumn = "courseUuid"
)
Meta meta;
}
问题是,当没有课程的元信息存在时,我想显示默认值。假设我想显示所有课程,如果元信息存在,则将课程标记为收藏夹。如果没有,课程也应显示,但不标记为收藏夹
有没有一种方法可以告诉room元数据并不总是存在,如果没有,应该使用默认值
还是换一种方式?您可以使用@ColumnInfo注释添加默认值
@ColumnInfo(name=“isFavorite”,defaultValue=“false”)公共布尔值isFavorite
参考:
注意:请检查@ColumnInfo注释中默认值可用的确切房间库版本。谢谢。问题是,当不存在条目时,元对象是空的。我认为有一种方法可以在找不到引用的情况下初始化一个新的元对象。可能是默认初始化(meta meta=new meta())和默认列值,如果为null,则不赋值。但是有没有方法告诉room自动这么做?像一个注解?