使用 Room Persistence Library 插入多个表

use*_*865 6 android android-sqlite android-room

这是我第一次使用 Room。我有一个班级叫:

@Entity(tableName = "users")
class User{
   @PrimaryKey
   @ColumnInfo(name = "id")
   @SerializedName("id")
   String id;

   @ColumnInfo(name = "name")
   @SerializedName("name")
   String name;

   @SerializedName("shift")
   @Ignore
   List<Shift> shifts; 
}

@Entity(tableName = "shifts")
class Shift{
   @PrimaryKey
   @ColumnInfo(name = "id")
   @SerializedName("id")
   String id;

   @ColumnInfo(name = "start_time")
   @SerializedName("start_time")
   String startTime;

   @ColumnInfo(name = "end_time")
   @SerializedName("end_time")
   String endTime;
}
Run Code Online (Sandbox Code Playgroud)

我希望这两个是数据库中的单独表,因此我不能使用 @Embedded 注释,因为它将创建一个使用所有字段作为列的表。我也在使用上面的 User 类来存储来自服务器的 json 响应,在那里我在 json 对象中获取用户和转移详细信息。

有什么方法可以在用户表中插入用户详细信息后立即在班次表中插入班次详细信息?我最初认为这将使用 @Embeded 处理,但这会在用户表中创建我不想要的移位表列。

有人可以帮助我了解我应该如何在 Room Persistence Library 中处理这个问题。类似的,我也必须删除。

谢谢

Com*_*are 3

在用户表中插入用户详细信息后,有什么方法可以在班次表中插入班次详细信息吗?

创建您自己的 DAO@Transaction方法,该方法调用User和 的插入Shift

类似的,我也必须对删除做同样的事情。

如果您修复您的Shift类,使其与适当的级联删除选项有@ForeignKey关系,则删除 a也会删除其行。在您当前的实现中,和是无关的。UserUserShiftUserShift