如何使数据库处理自动插入序列ID postgresql
How to make db handle auto insert sequence id postgesql
我有一个存在的实体(TableEntity.java),数据库中存在table,还有数据
以下是 TableEntity.java
中列 ID 的处理方式
@Id
@SequenceGenerator(name = "table_name_id_seq", sequenceName = "table_name_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "table_name_id_seq")
@Column(name = "id", nullable = false, updateable = false)
private int id;
在数据库中,我查看了table的属性,对于id列,数据类型是int并且设置为Not NULL
前面的代码,用于将数据插入数据库,只做 "repository.save()"
但是现在,我想使用 PreparedStatement 每批将数据插入数据库
这是我创建查询的方式
String query = "INSERT INTO table_name (column1, column2) values (?, ?)";
问题是,当执行查询时,它违反了 id 列的空约束。如何使数据库可以处理我的列 ID?因为,当我只使用 repository.save() 时工作正常,但是当我使用它(我可以说它是本机查询吗?)查询时,会出现该异常。如何解决这个问题?或任何解决此问题的参考资料?
设置列的默认值:
alter table table_name
alter column id set default nextval('table_name_id_seq');
现在,如果 INSERT 语句没有为 id
列提供值(通过不提及它),下一个序列值将用于填充该列。
我有一个存在的实体(TableEntity.java),数据库中存在table,还有数据 以下是 TableEntity.java
中列 ID 的处理方式@Id
@SequenceGenerator(name = "table_name_id_seq", sequenceName = "table_name_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "table_name_id_seq")
@Column(name = "id", nullable = false, updateable = false)
private int id;
在数据库中,我查看了table的属性,对于id列,数据类型是int并且设置为Not NULL 前面的代码,用于将数据插入数据库,只做 "repository.save()" 但是现在,我想使用 PreparedStatement 每批将数据插入数据库 这是我创建查询的方式
String query = "INSERT INTO table_name (column1, column2) values (?, ?)";
问题是,当执行查询时,它违反了 id 列的空约束。如何使数据库可以处理我的列 ID?因为,当我只使用 repository.save() 时工作正常,但是当我使用它(我可以说它是本机查询吗?)查询时,会出现该异常。如何解决这个问题?或任何解决此问题的参考资料?
设置列的默认值:
alter table table_name
alter column id set default nextval('table_name_id_seq');
现在,如果 INSERT 语句没有为 id
列提供值(通过不提及它),下一个序列值将用于填充该列。