Вы не можете использовать cast()
здесь, потому что для этого потребуется jOOQ, чтобы понять, как привести ваш тип данных к вашему пользовательскому типу в SQL . То, что вы хотите сделать, - это преобразование на стороне клиента, и в идеале это достигается с помощью Converter
.
. После того, как вы реализовали Converter
, рекомендуемый способ его использования - присоединить его к сгенерированному коду. используя генератор кода: https://www.jooq.org/doc/latest/manual/code-generation/custom-data-types
<forcedType>
<userType>java.time.DayOfWeek</userType>
<converter>com.example.YourConverter</converter>
<includeExpression>(?i:DAY_OF_WEEK)</includeExpression>
</forcedType>
Если это не вариант, вы можете создать «преобразованную» ссылку на поле следующим образом:
// I'm assuming you're storing the data as an INTEGER
DataType<DayOfWeek> type = SQLDataType.INTEGER.asConvertedDataType(new YourConverter());
Field<DayOfWeek> field = DSL.field("{0}", type, lecture.DAY_OF_WEEK);
// And now use that instead
create.select(field)...
Но я действительно рекомендую прикрепитьконвертер в сгенерированный код для наибольшего удобства.