使用Room Persistence Library插入多个表

时间:2017-10-17 05:45:24

标签: 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;
}

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

一旦我在用户表中插入用户详细信息,我是否可以在 shift 表中插入Shift详细信息?我最初认为这将使用@Embeded处理,但这将在用户表中创建我不想要的 shift 表列。

有人可以帮我解释我在室内持久性库中如何处理这个问题。类似的我也必须做删除。

由于

1 个答案:

答案 0 :(得分:2)

  

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

创建自己的DAO @Transaction方法,调用UserShift的插入内容。

  

类似我也必须做删除。

如果您使用相应的级联删除选项修复了Shift类,使其与@ForeignKey具有User关系,则删除User会删除其Shift {1}}行也是如此。在您当前的实施中,UserShift无关。