使用自动生成的主键插入2个表

时间:2018-03-31 15:31:43

标签: java android sql android-room

我有两个实体,锻炼和锻炼。每次锻炼都可以进行很多锻炼。当我想在两张桌子中插入一个带有练习列表的新训练时,我首先将锻炼数据插入锻炼,然后我尝试将练习插入练习表。

这两个表与练习中的外键相关(exercise_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;
  ...
}

1 个答案:

答案 0 :(得分:0)

在你的WorkoutDao类中,你可以在插入时返回long值(生成的id),如下所示:

@Insert
long insert(Workout work);