Java 使用jooq在postgres中自动生成主键
我正在使用jooq生成的dao对表执行创建操作。 该表具有类型为bigserial的主键“id”,默认约束为NOTNULLJava 使用jooq在postgres中自动生成主键,java,postgresql,jooq,Java,Postgresql,Jooq,我正在使用jooq生成的dao对表执行创建操作。 该表具有类型为bigserial的主键“id”,默认约束为NOTNULL 创建表public.book( id bigserial不为空, 作者varchar(64) 约束书\u主键(id) ) 我说用jooq创建一个记录 Book b=新书(); b、 作者(“埃里克”); BookDao bd=新BookDao(jooqConfiguration); bd.插入(b); 这会引发id为null的约束冲突异常 Book b=新书(); b、
创建表public.book(
id bigserial不为空,
作者varchar(64)
约束书\u主键(id)
)
我说用jooq创建一个记录
Book b=新书();
b、 作者(“埃里克”);
BookDao bd=新BookDao(jooqConfiguration);
bd.插入(b);
这会引发id为null的约束冲突异常
Book b=新书();
b、 setId(25);
b、 作者(“埃里克”);
BookDao bd=新BookDao(jooqConfiguration);
bd.插入(b);
我没有得到异常,但postgres不会自动生成值
位于的postgres文档说“在INSERT中省略序列列,或指定默认关键字”
如何配置jooq生成的dao以省略此列或使用默认值
编辑-我正在使用jooq版本3.3.2和postgres 8.4。(最终的目标是aws红移。所以在postgres 8.4上进行原型设计)。这个生成的dao没有正确处理默认值的问题已经出现在jooq的github问题列表中 它在3.4.0中固定。迁移到3.4.0为我解决了这个问题
回答问题,以便其他人可以在需要时找到。只需补充说明:您的链接不是“postgres文档”。官方手册在这里:为了确保您使用的是最新的jOOQ版本(3.4.0)?使用nextval(),检查手册:@FrankHeikens-这意味着为创建的每个对象调用2次db,并且必须为多个对象执行此操作。没有办法告诉jooq db将生成所需的值吗?@LukasEder-我使用的是jooq版本3.3.2,它是mvn存储库和postgres 8.4上的最新版本。我应该迁移到jooq 3.4.0吗?最后的目标是aws红移。所以在postgres 8.4上进行原型制作。你比我快:-)但我认为某个地方有问题,谢谢你查找