Чтобы получить полный контроль над тем, как хранятся эти данные, вы можете:
- Указать тип столбца базы данных при его определении.Slick автоматически делает разумный выбор, но вы можете использовать опцию столбца
O.SqlType
, чтобы переопределить его типом (возможно, зависящим от поставщика). - Затем предоставьте настраиваемое отображение из вашего типа в значение, которое делаетсмысл для типа столбца базы данных, который вы хотите использовать.
Первая часть в определении вашей таблицы:
class MyTable(tag: Tag) extends Table[MyClass](tag, "table_name") {
def when = column[MyDateTime]("my_date", O.SqlType("DATETIME")
// another example:
def avatar = column[Option[Array[Byte]]]("avatar", O.SqlType("BINARY(2048)"))
}
Если вы используете Slick для создания схемы, столбцу my_date
будет присвоен тип DATETIME
,
Во второй части вы предоставляете сопоставление, подобное тому, которое задано в вашем вопросе.Это должен быть тип данных, который вы хотите использовать (DateTime), или тип данных, который имеет смысл для столбца DATETIME
.Например, документация MySQL указывает, что формат: YYYY-MM-DD HH:MM:SS
.Так что ваша картографическая функция должна иметь возможность принимать и создавать String
типов этого формата.
В качестве альтернативы ...
Начиная с Slick 3.3.0, есть встроенныхв поддержку типов данных java.time
.В Java нет DateTime
, но, возможно, Java LocalDateTime
или ZonedDateTime
может удовлетворить ваши потребности.В этом случае нет необходимости в отображении или O.SqlType
.