В моем случае у меня есть тип enum в postgres:
create type my_type as enum (string value);
И некоторые таблицы, использующие это как тип столбца:
create table A (
...
t my_type,
...
)
В postgres я могу вставить новую запись втаблица A выглядит следующим образом:
insert into A values(..., 'my_type_value', ...);
Scalikejdbc генерирует правильный sql:
insert into A (...) values (..., 'my_type_value', ...)
Но происходит сбой с ошибкой:
ОШИБКА: столбец "t" равентипа my_type, но выражение имеет различный символьный тип. СОВЕТ: Вам нужно будет переписать или привести выражение.
Я пытался сделать это:
object MyType extends Enumeration {...}
case class A(..., t: MyType, ...)
object A extends SQLSyntaxSupport[A] {
def apply(rs: WrappedResultSet): A = A(..., rs.getString('t'), ...)
}
Также я пыталсядобавить неявные преобразования в enum-тип в scala-коде:
object MyType extends Enumeration {
implicit def stringToValue...
implicit def valueToString ...
}
Но это тоже не помогло.
Вставьте код выглядит следующим образом:
withSQL {
insertInto(A).namedValues(
...
A.column.t-> e.t, // e - passed entity into insert fun
....
)
}.update().apply()