首页 > 解决方案 > 如何在@Entity 的 primaryKeys 列表中设置 autoGenerate?

问题描述

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

非常感谢!

标签: androiddatabasesqliteandroid-room

解决方案


欢迎来到 Stackoverflow。

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

而对于,只有类型为单列autoGenerate的主键才能自动生成。integer您不能自动生成复合主键。


推荐阅读