在Room Persistence Library中使任何列自动生成(不是主键)

时间:2018-10-23 05:52:08

标签: android database sqlite android-room

我要自动生成

  

ID //自动,但不是主要

列并设置

  

productID //主要不是自动

作为主键... 有可能还是我的想法错了...? 如果我的想法是错误的,那么请给我写信... 谢谢

//@PrimaryKey(autoGenerate = true)
@Nullable  // I want to autogenerate this "ID" column 
private long ID;

@ColumnInfo(name = "pCategorySubID")
@SerializedName("pCategorySubID")
@Expose
private String pCategorySubID;

@PrimaryKey // this is my primary key
@ColumnInfo(name = "ProductID")
@SerializedName("ProductID")
@Expose
@NonNull
private String productID;

2 个答案:

答案 0 :(得分:1)

您可以使用 column info 标签中的 index 参数:

例如@ColumnInfo(index = true)

//@PrimaryKey(autoGenerate = true)
@ColumnInfo(index = true) // use this to make it index
@Nullable  // I want to autogenerate this "ID" column 
private long ID;

@ColumnInfo(name = "pCategorySubID")
@SerializedName("pCategorySubID")
@Expose
private String pCategorySubID;

@PrimaryKey // this is my primary key
@ColumnInfo(name = "ProductID")
@SerializedName("ProductID")
@Expose
@NonNull
private String productID;

答案 1 :(得分:0)

在文档中

  

每个实体都必须声明一个主键,除非其超类之一   声明一个主键。如果Entity及其超类都定义   一个PrimaryKey,子级的PrimaryKey定义将覆盖   父母的PrimaryKey。

因此必须在每个实体中定义主键。

没有主键是不可能的。

引用here