我遇到了一个问题,我找不到任何关于Android空间和自动生成主键的文档。
我有一个实体类,看起来有点像这样:
@Entity
public class Preference {
@PrimaryKey(autoGenerate = true)
private int id;
public void setId(int id) {
this.id = id;
}
}
当我手动设置id时,这是正常的,但是当我不设置主键时,我得到一个关于主键为空的错误。看着自动生成的文件,我看不到它会自动增加主键的任何地方。
所以我想我的问题是:你能用setter自动生成私有成员的主键吗,或者我需要在setter中手动自动生成我的键吗?
好的,这段代码不会生成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