如何将主键作为 Room Persistence lib 的自动增量

新手上路,请多包涵

我正在创建一个实体( 房间持久性库)类 Food,我想在其中制作 foodId 作为自动增量。

 @Entity
class Food(var foodName: String, var foodDesc: String, var protein: Double, var carbs: Double, var fat: Double)
{
    @PrimaryKey
    var foodId: Int = 0
    var calories: Double = 0.toDouble()
}

如何设置 foodId 自动增量字段?

原文由 Sachin Chandil 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 562
2 个回答

您需要使用 autoGenerate 属性

您的主键注释应该是这样的:

 @PrimaryKey(autoGenerate = true)

PrimaryKey 的参考。

原文由 MatPag 发布,翻译遵循 CC BY-SA 4.0 许可协议

在下面的示例中,当您创建新用户时,按构造函数中的方式传递参数。 Room 会自动生成 id。所有用户对象 id 都已在 id setter 中设置为 int 默认值,因此不要调用 setId

 @Entity
public class User {

    @PrimaryKey(autoGenerate = true)
    private int id;

    @ColumnInfo(name = "full_name")
    private String name;

    @ColumnInfo(name = "phone")
    private String phone;


    public User(String name, String phone) {
        this.name = name;
        this.phone = phone;
    }

    public void setId(int id){
        this.id = id;
    }

}

原文由 Linus Kiarie 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题