这是我第一次使用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 表列。
有人可以帮我解释我在室内持久性库中如何处理这个问题。类似的我也必须做删除。
由于
答案 0 :(得分:2)
在用户表中插入用户详细信息后,有什么方法可以在轮班表中插入Shift详细信息?
创建自己的DAO @Transaction
方法,调用User
和Shift
的插入内容。
类似我也必须做删除。
如果您使用相应的级联删除选项修复了Shift
类,使其与@ForeignKey
具有User
关系,则删除User
会删除其Shift
{1}}行也是如此。在您当前的实施中,User
和Shift
无关。