我在postgresql表中有 id 列和 position 列。我想自动增加位置,因此我使用序列数据类型添加了位置:
ALTER TABLE tbl ADD COLUMN position serial;
id name position
------- ------- -------
1 S4 4
2 S2 2
3 S3 3
4 S1 1
问题是,当我尝试创建新对象时,出现以下错误:
org.postgresql.util.PSQLException: error: PSQLException: ERROR: null value in column "position" violates not-null
如何设置排名列自动递增?
我的普通对象:
public class Stg {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
@NotNull
@Size(max = 20)
@Column(name = "name", length = 20, nullable = false)
private String name;
private Integer position;
答案 0 :(得分:0)
1st,您需要创建序列:
CREATE SEQUENCE sys_sequence_name START -9223372036854775808 MINVALUE -9223372036854775808 MAXVALUE 9223372036854775807;
然后创建表,但在声明行参数后添加
CREATE TABLE table_name (
id bigserial primary key,
var_with_seq bigint not null default nextval('sys_sequence_name')
nextval('sys_sequence_name')-这将使用您创建的顺序。