我有可以自动增加PK ID的应用程序。我必须添加其他自动增量列,并使用liquibase使其起作用-liquibase为自动增量创建了序列。当我从查询工具进行插入时,或者当我未在实体中映射此字段并使持久自动增量工作时。但是当我添加时:
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "next_value", nullable=false, unique=true)
private Long nextValue;
我收到一个难看的错误:
Caused by: org.postgresql.util.PSQLException: ERROR: empty value in the "next_value" column violates the limit of the required value
怎么了?
编辑:
我的liquibase变更集添加了此列并使其自动递增:
<addColumn tableName="table">
<column name="next_value" type="number"/>
</addColumn>
<addAutoIncrement
columnDataType="number"
columnName="next_value"
incrementBy="1"
startWith="1"
tableName="table"/>
<sql>select setval('table_next_value_seq', (select cast(current_value+1 as bigint) from gapless_sequence), false)</sql>
setval不是从1开始的
答案 0 :(得分:0)
我想它应该更改数据库中的表
ALTER TABLE tblName(
nextValue LONG NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
....
答案 1 :(得分:0)
您必须禁用可插入和可更新的false
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "next_value", unique = true, nullable = false, insertable = false,updatable = false)