如何在@Entity的primaryKeys列表中设置autoGenerate?

时间:2018-10-19 17:37:53

标签: android database sqlite android-room

我是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;
}

非常感谢您!

2 个答案:

答案 0 :(得分:1)

欢迎使用Stackoverflow。

从技术上讲,您不能拥有2个主键。根据定义,它是一个具有UNIQUE约束的单个索引。尽管它可以一次应用于2列。这意味着这2列的组合应该是唯一的,但每列分别可以包含重复值。

对于autoGenerate,只有类型为integer且只有一列的主键才能自动生成。您无法自动生成复合主键。

答案 1 :(得分:0)

通常,主键应该是唯一标识每一行的单列。如果还想保证该对(userId,planName)对的唯一性,则只需添加一个UNIQUE约束。此外,您可能想向一对列添加索引。