在 jOOQ 中使用 PostgreSQL CITEXT 扩展

Using PostgreSQL CITEXT Extension with jOOQ

Postgres CITEXT 扩展有助于处理不区分大小写的数据。例如,这在处理电子邮件时很有用。参见 here and here。我定义了以下 table:

CREATE EXTENSION citext;

CREATE TABLE user (
  user_id   INTEGER PRIMARY KEY,
  email     CITEXT  NOT NULL UNIQUE,
  password  TEXT    NOT NULL,
  salt      TEXT    NOT NULL
);

并将以下内容添加到 pom.xml 中的 <database> 部分:

<forcedType>
  <name>CLOB</name>
  <expression>public.user.email</expression>
  <types>CITEXT</types>
  </forcedType>
</forcedTypes>

当我 运行 代码生成器时,确实生成了字段,但日志输出中有很多 "missing name" 警告。例如:

[INFO] Generating routine       : CitextLt.java
[WARNING] Missing name          : Object citext_ne holds a column without a name at position 1

我是否在将 CITEXT 扩展与 jOOQ 集成的正确轨道上?

如果是这样,我该如何提供这些缺失的姓名?

本题有两个问题:

日志记录

WARN水平可能有点过高了。我已经注册了一个问题以将其还原为 INFOhttps://github.com/jOOQ/jOOQ/issues/5385

您不必担心这些警告。 PostgreSQL 支持声明参数未命名且只能通过参数索引/位置引用的存储过程。 jOOQ的代码生成器只表示这是"unusual",生成了一个合成参数名

这应该不会影响您在 jOOQ 中使用 CITEXT。

你的强制类型配置

目前有一个错误会阻止您将用户定义的类型与 <types/> 匹配:http://github.com/jOOQ/jOOQ/issues/5363

只需删除您的 <types/> 元素,它就会起作用。