当前位置: 首页 > 知识库问答 >
问题:

Android房间-自动生成主键

司空福
2023-03-14

我遇到了一个问题,我找不到任何关于Android空间和自动生成主键的文档。

我有一个实体类,看起来有点像这样:

@Entity
public class Preference {

    @PrimaryKey(autoGenerate = true)
    private int id;

    public void setId(int id) {

        this.id = id;

    }

}

当我手动设置id时,这是正常的,但是当我不设置主键时,我得到一个关于主键为空的错误。看着自动生成的文件,我看不到它会自动增加主键的任何地方。

所以我想我的问题是:你能用setter自动生成私有成员的主键吗,或者我需要在setter中手动自动生成我的键吗?

共有1个答案

燕经国
2023-03-14

好的,这段代码不会生成id成员,因为该成员为null,我必须将其设置为整数对象,在这种情况下,当该成员等于null时,它将自动生成一个新id,或者,我需要在初始化该对象时将其设置为等于0,这将执行相同的操作。

我已经把它设置为一个整数,它完美地解决了我的问题。

@Entity
public class Preference {

    @PrimaryKey(autoGenerate = true)
    private Integer id;

    public void setId(Integer id) {

        this.id = id;

    }

}
 类似资料:
  • 所以我的数据库和一个网站实体一起工作 然后我尝试为网站上的网页添加关系 当我尝试使用我的网站Dao添加网站时,例如使用命令 我的应用程序崩溃了。创建的每个网站的id为0,外键约束失败。这里出了什么问题?我将primarykey从int更改为INTEGER,当我这样做时,它将主键设置为null,当primarykey为int时,它将id设置为0。发生什么事了?

  • 下面的奇怪问题是代码示例,无法创建复合主键 破例 不确定哪里的问题是一切看起来都很好,但当我删除主键注释,这个例外不会出现,对于语法,我遵循官方Android留档。也没有给出有关问题位置的任何详细信息。

  • 问题内容: 我的主键实体如下所示 当我跑步时,出现错误 无法获取或更新下一个值;嵌套的异常是org.hibernate.exception.SQLGrammerException:无法获取或更新下一个值 但是当我改变为 没有错误抛出。我想在 oracle db 上为每个表生成唯一的主键。 问题答案: 当将新创建的实体插入数据库时,告诉JPA提供者使用表从中获取ID。 当使用Hibernate作为提

  • 我想创建一个复合主键,其中一个字段是自动生成的(JPA)。我能这么做吗?有没有可能从spring环境中得到一个生成器? null

  • 我正在创建一个Android应用程序,它将存储价值列表,例如。特定用户定义名称下不同时间的温度值。我打算使用SQLite来存储值,我读到使用Room将为它提供一个ORM层,所以我使用了它。但是后来我遇到了一个异常,基本上说我不能从主线程打开数据库连接,所以我尝试使用LiveData进行插入和检索。现在我有两张桌子。我只是想展示它们的结构,而不是在句法上准确: 最初,我考虑不强制外键关系,只在插入P