自动增量不适用于PostgreSQL-Java EE APP

时间:2018-12-14 09:28:16

标签: java postgresql jpa java-ee

我有可以自动增加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开始的

2 个答案:

答案 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)