简体   繁体   中英

PostgresQL and Hibernate Auto Generated (not PK) value

I try to autogenerate value which is not PK, when I do save in DB. I created Entity with value:

class Entity {    

// Other values

@NaturalId
@SequenceGenerator(name = "number_sequence", sequenceName = 
"number_sequence")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "number_sequence")
private Long number;
}

And script for sequence:

CREATE SEQUENCE schema.number_sequence AS BIGINT
INCREMENT 1
START 1
OWNED BY table_name.number;

But when I build Entity without number and save it to DB I have an error:

org.postgresql.util.PSQLException: ERROR: null value in column "number" violates not-null 
constraint
Detail: Failing row contains (e925b4fb-5147-4754-b949-08d79a6ad764, 2020-06-04 
14:31:50.49584+03, null, bd765ef29c3211e98b6b019787d6f1ee, 
1e100b1da97b11e98b6b511f0c71b787).

Where I wrong?

Thanks to Kayaman, and SternK. What have I done:

 @NaturalId
 @Generated(value = GenerationTime.INSERT)
 @Column(insertable = false, updatable = false)
 private Long number;

on my Entity and:

CREATE SEQUENCE number_sequence AS BIGINT
    INCREMENT 1
    START 1
    OWNED BY table.number;

ALTER TABLE table
    ALTER COLUMN number SET DEFAULT nextval('number_sequence');

In my entity. You can add schema.number_seq or schema.table if query above doesn't work

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM