我正在使用jooq生成的dao's在表上執行創建操作。 表有一個主鍵「ID」有型BIGSERIAL和空使用jooq自動生成postgres中的主鍵
CREATE TABLE public.book (
id bigserial NOT NULL,
author varchar(64)
CONSTRAINT book_primary PRIMARY KEY (id)
)
創建具有jooq記錄我說
Book b = new Book();
b.setAuthor("Eric");
BookDao bd = new BookDao(jooqConfiguration);
bd.insert(b);
這將引發約束違反異常ID的不是默認的限制是空。如果我設置一個ID如
Book b = new Book();
b.setId(25);
b.setAuthor("Eric");
BookDao bd = new BookDao(jooqConfiguration);
bd.insert(b);
我沒有得到例外,但postgres不會自動生成一個值。
在http://www.postgresql.org/docs/current/static/datatype-numeric.html#DATATYPE-SERIAL Postgres的文件說,「省略的SERIAL列中插入,或指定DEFAULT關鍵字」
如何配置的jooq產生DAO要麼忽略此列或使用默認值
編輯 - 我使用jooq版本3.3.2和postgres 8.4。 (最終的目標是紅眼,所以在postgres 8.4上進行原型設計)。
只是一個側面說明:你的鏈接不是「postgres文檔」。官方手冊在這裏:http://www.postgresql.org/docs/current/static/index.html –
可以肯定的是,你*使用最新的jOOQ版本(3.4.0)? –
使用nextval(),檢查手冊:http://www.jooq.org/doc/3.4/manual-single-page/#sequences-and-serials –