Как я могу сопоставить мгновенные сообщения Java с временной меткой H2 с часовым поясом с помощью jOOQ?

Используя Postgres, я могу заставить столбцы TIMESTAMPTZ сопоставляться с Instant с помощью принудительного типа в сопоставлении jOOQ.

create table if not exists public.items
(
    id           varchar(100) not null,
    modified     timestamptz    not null,
    name         varchar(100) not null,
    "sellByDate" date,
    quality      integer      not null
    );
forcedTypes {
  forcedType {
    name = 'instant'
    includeExpression = '.*'
    includeTypes = 'TIMESTAMPTZ'
  }
}

Когда я пытаюсь сделать то же самое с H2

create table if not exists public.items
(
    id           varchar(100) not null,
    modified     timestamp with time zone   not null,
    name         varchar(100) not null,
    "sellByDate" date,
    quality      integer      not null
    );

forcedTypes {
    forcedType {
        name = 'instant'
        includeExpression = '.*'
        includeTypes = 'TIMESTAMP WITH TIME ZONE'
    }
}

Сопоставление не применяется

WARNING Unused forced types      : There are unused forced types, which have not been used by this generation run.
This can be because of misconfigurations, such as, for example:
- case sensitive regular expressions
- regular expressions depending on whitespace (Pattern.COMMENTS is turned on!)
- missing or inadequate object qualification
- the object to which the configuration was applied in the past has been dropped
Try turning on DEBUG logging (-X in Maven, --debug in Gradle, and <logging/> in jOOQ) to get additional info about the schema
16:42:53 WARNING Unused forced type       : <priority>0</priority><name>instant</name><autoConverter>true</autoConverter><includeExpression>.*</includeExpression><includeTypes>TIMESTAMP WITH TIME ZONE</includeTypes><nullability>ALL</nullability><objectType>ALL</objectType>

Может ли кто-нибудь помочь диагностировать проблему, пожалуйста?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Подсказка – в предупреждении: «(Шаблон.КОММЕНТАРИИ включен!)». Это означает, что пробелы в регулярном выражении игнорируются классом Pattern Java. Обычно это полезно для регулярных выражений, отформатированных следующим образом:

(

# Comment
  SOME_VALUE

# Other comment
| SOME_OTHER_VALUE
)

В этом случае вы не хотите, чтобы пробелы (или комментарии) были частью регулярного выражения. Конечно, вы не хотите, чтобы это применялось к вашему регулярному выражению, поэтому избегайте пробелов:

includeTypes = 'TIMESTAMP\\ WITH\\ TIME\\ ZONE'

Или:

includeTypes = 'TIMESTAMP\\sWITH\\sTIME\\sZONE'

Это помогает, спасибо. Если кто-то еще идет по этому пути, обратите внимание, что обработка H2 TIMESTAMP With TIME ZONE не работает так же, как TIMESTAMPTZ в Postgres, поэтому вам потребуется некоторое тестирование летнего времени!

Duncan McGregor 25.04.2024 13:41

@DuncanMcGregor: На тот случай, если вы не используете последнюю версию jOOQ, также была ошибка jOOQ: github.com/jOOQ/jOOQ/issues/14866

Lukas Eder 25.04.2024 14:18

Другие вопросы по теме