我可以将非主键字段设置为房间中的自动生成的值吗?

时间:2019-02-13 10:15:03

标签: android sqlite android-room android-database

我有带有复合主键的表。我可以将其中之一设为自动生成吗?

场景: 我有一个teacher table,其中包含字段techerId,名称,性别,角色,部门,职等,并且它具有由角色,部门和职等组成的复合主ID。如何使Teacherid为自动生成的?

1 个答案:

答案 0 :(得分:1)

如果您浏览THIS ANSWER,将会发现我们在复合主键中没有自动递增属性。因此,解决方法是使用indexingunique constraint的概念。将roledepttgrade列设为indices,并将unique约束设置为true。这将确保这三个值对始终是唯一的(例如primaryKey)。然后在实体中将techerId添加为Primarykey(autoGenerate = true)。您的entity类如下所示:

@Entity(tableName = "teacher",indices = arrayOf(Index(value = ["role","department","grade"],unique = true)))
public class Teacher{
    @PrimaryKey(autoGenerate = true)
    int teacher_id;

    @ColumnInfo(name = "name")
    String teacher_name;

    //Rest of the fields
    ......
    ......
}