我是Android Room库的新手。我想用两个主键创建一个表。我也想将autoGenerate设置为这两个主键,但是我不知道该怎么做。代码的详细信息如下所示:
@Entity(primaryKeys = {"userId", "planName"},
foreignKeys = @ForeignKey(entity = User.class,
parentColumns = "id",
childColumns = "userId",
onDelete = CASCADE))
public class Plan {
public int userId;
@NonNull
public String planName;
}
非常感谢您!
答案 0 :(得分:1)
欢迎使用Stackoverflow。
从技术上讲,您不能拥有2个主键。根据定义,它是一个具有UNIQUE
约束的单个索引。尽管它可以一次应用于2列。这意味着这2列的组合应该是唯一的,但每列分别可以包含重复值。
对于autoGenerate
,只有类型为integer
且只有一列的主键才能自动生成。您无法自动生成复合主键。
答案 1 :(得分:0)
通常,主键应该是唯一标识每一行的单列。如果还想保证该对(userId,planName)对的唯一性,则只需添加一个UNIQUE约束。此外,您可能想向一对列添加索引。