可用版本: Dev (3.21) | 最新 (3.20) | 3.19

用户定义类型属性路径

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

jOOQ的代码生成器支持用户定义的类型 (UDT),并为这些类型生成元数据、记录、POJO 和其他工件。

在 SQL 中解引用这些类型时,您可以按如下方式访问 org.jooq.UDTRecord。假设使用 PostgreSQL 语法

CREATE TYPE country AS (
  iso_code TEXT,
  description TEXT
);

CREATE TYPE name AS (
  first_name TEXT,
  last_name TEXT
);

CREATE TYPE address AS (
  street TEXT,
  number TEXT,
  zip TEXT,
  city TEXT,
  country COUNTRY
);

CREATE TABLE customer (
  id INT PRIMARY KEY,
  name NAME,
  address ADDRESS
);

可以使用 jOOQ 按如下方式获取此数据

Record2<NameRecord, AddressRecord> result =
create.select(CUSTOMER.NAME, CUSTOMER.ADDRESS)
      .from(CUSTOMER)
      .where(CUSTOMER.ID.eq(1))
      .fetchOne();

System.out.println(result.value1().getFirstName());
System.out.println(result.value1().getLastName());
System.out.println(result.value2().getCountry().getIsoCode());

如果不需要获取整个 UDT,也可以直接在 SQL 中以类型安全的方式解引用单个属性!

Record3<String, String, String> result =
create.select(
          CUSTOMER.NAME.FIRST_NAME,
          CUSTOMER.NAME.LAST_NAME,
          CUSTOMER.ADDRESS.COUNTRY.ISO_CODE)
      .from(CUSTOMER)
      .where(CUSTOMER.ID.eq(1))
      .fetchOne();

System.out.println(result.value1());
System.out.println(result.value2());
System.out.println(result.value3());

反馈

您对此页面有任何反馈吗? 我们很乐意听到您的声音!

The jOOQ Logo