我正在使用带有Springboot 1.5.14的休眠5.0.12。我的实体有这个编号@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name = "UserID", nullable = true)public int getUserId() { return this.userId;}public void setUserId(int userId) { this.userId = userId;}在我的数据库中有的礼物记录id = 0。如果我阅读,编辑并保存了这些记录,休眠将使用生成的新ID复制这些记录。如何配置休眠以允许id = 0值?在eclispelink中,此配置为 "eclipselink.id-validation" = "NULL"
2 回答
慕娘9325324
TA贡献1783条经验 获得超4个赞
解决方案是将主键类型声明为Integer而不是int。
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "UserID", nullable = true)
public Integer getUserId() {
return this.userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
繁花如伊
TA贡献2012条经验 获得超12个赞
这个问题应该与数据库有关,因为即使您为Long / Int主键显式设置了零值(由于大多数数据库中设置默认设置的方式),通常也是由数据库“纠正”您的输入。
即在MySQL的情况下,可以明确地设置ID零(0),但数据库仍然会忽略它,除非你IE添加/设置NO_AUTO_VALUE_ON_ZERO
你的sql_mode
。如果是MySQL / MariaDB,可以直接在my.cnf
文件中进行更改,如果您不想重置数据库,则需要通过以下方式进行设置set global sql_mode='NO_AUTO_VALUE_ON_ZERO'
我认为这个答案很重要,因为您利用了 @GeneratedValue(strategy=GenerationType.IDENTITY)
添加回答
举报
0/150
提交
取消