使用自动生成的主键插入到 2 个表中
Inserting into 2 tables with auto-generated primary key
我有两个实体,锻炼和锻炼。每个锻炼可以有很多练习。当我想将带有练习列表的新锻炼插入到两个 table 中时,我首先将锻炼数据插入到 Workout 中,然后尝试将练习插入到练习中 table ].
这两个 table 在 Exercise 中通过外键相关(workout_id 和 Workout 中的 id)。问题是 Workout 中的主键是自动生成的,所以当我去插入练习时,我不知道要给外键值什么,除非我也查询 Workout id。这是最好的做法吗?
@Entity(tableName = "workouts")
public class Workout {
@PrimaryKey(autoGenerate = true)
public int id;
...
}
@Entity(tableName = "exercises", foreignKeys = @ForeignKey(entity = Workout.class,
parentColumns = "id",
childColumns = "workout_id"))
public class Exercise {
@PrimaryKey(autoGenerate = true)
public int id;
@ColumnInfo(name = "workout_id")
public int workoutId;
...
}
在您的 WorkoutDao class 中,您可以 return 插入时的长值(生成的 ID),如下所示:
@Insert
long insert(Workout work);
我有两个实体,锻炼和锻炼。每个锻炼可以有很多练习。当我想将带有练习列表的新锻炼插入到两个 table 中时,我首先将锻炼数据插入到 Workout 中,然后尝试将练习插入到练习中 table ].
这两个 table 在 Exercise 中通过外键相关(workout_id 和 Workout 中的 id)。问题是 Workout 中的主键是自动生成的,所以当我去插入练习时,我不知道要给外键值什么,除非我也查询 Workout id。这是最好的做法吗?
@Entity(tableName = "workouts")
public class Workout {
@PrimaryKey(autoGenerate = true)
public int id;
...
}
@Entity(tableName = "exercises", foreignKeys = @ForeignKey(entity = Workout.class,
parentColumns = "id",
childColumns = "workout_id"))
public class Exercise {
@PrimaryKey(autoGenerate = true)
public int id;
@ColumnInfo(name = "workout_id")
public int workoutId;
...
}
在您的 WorkoutDao class 中,您可以 return 插入时的长值(生成的 ID),如下所示:
@Insert
long insert(Workout work);