如何编写方言无关的jOOQ代码以在PostgreSQL生成GENERATED ALWAYS AS IDENTITY
生成PostgreSQL兼容的GENERATED ALWAYS AS IDENTITY语句
要让jOOQ生成GENERATED ALWAYS AS IDENTITY而非默认的BY DEFAULT,需要显式指定identity的生成策略,不能仅用简化的identity(true)写法。
解决方案代码
替换原有的identity(true),显式传入生成策略参数,示例如下:
dslContext .createTable("some_table") .column("id", INTEGER.notNull().identity(IdentityStartOption.DEFAULT, IdentityGenerationStrategy.ALWAYS))
关键说明
identity(true)是简化写法,默认采用IdentityGenerationStrategy.BY DEFAULT,这是多数数据库的通用默认行为- 显式指定
IdentityGenerationStrategy.ALWAYS后,jOOQ会根据PostgreSQL方言自动生成GENERATED ALWAYS AS IDENTITY语句,同时保持代码的方言无关性——在其他支持identity特性的数据库中,jOOQ会自动适配对应语法
内容的提问来源于stack exchange,提问作者Nikola
相关产品推荐
相关产品推荐

