首页 > 解决方案 > Android房间数据库中的多个表

问题描述

我想知道如何在 android room 数据库中拥有多个表并使用关系?我需要一点解释,或者如果你有一个很好的教程,我将不胜感激

谢谢。

标签: androiddatabaseandroid-room-relation

解决方案


您可以通过为每个表定义不同的实体类来拥有多个表,例如,如果我们有两个表 FactCategory 和 Facts,则每个 FactCategory 可以有多个事实。

事实类别:

@Entity(tableName = "categories")
data class FactCategory(@PrimaryKey var id: String, var title: String)

事实:

@Entity(tableName = "facts")
class Fact(
    @field:PrimaryKey val id: String,
    val title: String,
    val description: String?,
    val imageHref: String?,
    val catId: String
) 

在您的数据库类中,添加所有必需的实体类。您不能链接来自不同数据库的两个表。

在数据库类中添加实体

@Database(entities = [::class, FactCategory::class], version = 1)

然后在您的 DAO 对象中,您可以加入两个表:

@Query("select f.id, f.title, c.title, f.description from categories c join  facts f on  c.id = f.catId")

推荐阅读