使用自动生成的主键插入到 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);