Должен ли я просто отключить тип UInteger на JOOQ? - PullRequest
1 голос
/ 21 мая 2019

Я пытался написать несколько запросов (для MySQL), и я не уверен, как написать этот конкретный, который включает типы Integer и UInteger:

DSL.position(T1.FIELD, ":", -1).eq(T2.UINTFIELD)

position возвращает Field<Integer>, поэтому я не могу просто сравнить этот результат с моим Field<UInteger>. Есть ли простой способ добиться этого? Я хотел бы сохранить правильные типы полей для дальнейшей проверки.

1 Ответ

1 голос
/ 21 мая 2019

Для этого вы можете использовать DSL.cast() или DSL.coerce().Я рекомендую coerce.

  • DSL.cast() создает выражение приведения SQL, а ссылка на поле jOOQ требуемого типа
  • DSL.coerce() не влияет на сгенерированный SQL, но по-прежнему создает jOOQзаполненная ссылка нужного типа.

Например:

position(T1.FIELD, ":", -1).eq(coerce(T2.UINTFIELD, SQLDataType.INTEGER))
...