У меня есть приложение Scala, использующее Joda Time Lib, которое подключено к Postgres DB, и я хочу использовать Jooq lib.Я хочу хранить свои данные с отметкой времени в UTC, но я не знаю, как преобразовать их в Jooq.См. Сценарий создания таблицы.
CREATE TABLE some_event (
id SERIAL NOT NULL PRIMARY KEY,
timestamp TIMESTAMP NOT NULL,
);
Я пробовал что-то похожее ниже, но это не работает правильно.
import org.joda.time.DateTime
import java.time.Instant
import java.sql.Timestamp
private val zoneId = ZoneId.of("UTC")
val converter: Converter[Timestamp, DateTime] =
Converter.ofNullable(
classOf[Timestamp],
classOf[DateTime],
(t: Timestamp) => {
val i = t.toInstant
val z = ZonedDateTime.ofInstant(i, zoneId)
new DateTime(z.toInstant.toEpochMilli)
},
(t: DateTime) => {
val i = Instant.ofEpochMilli(t.getMillis)
val z = ZonedDateTime.ofInstant(i, zoneId)
Timestamp.from(z.toInstant)
},
)
protected val DATE_TIME_TYPE: DataType[DateTime] = SQLDataType.TIMESTAMP.asConvertedDataType(converter)
private object SomeEvent {
val ID: Field[Int] = field("id", classOf[Int])
val TIMESTAMP: Field[DateTime] = field("timestamp", DATE_TIME_TYPE)
}
Я также пытался реализовать конвертер с ведьмой OffsetDateTime, но он выбрасывает исключения,Я не могу позволить себе изменить таблицу и использовать TIMESTAMP WITH ZONE.Я использовал Doobie lib в предыдущей реализации, где используется java.time.Instant, но кажется, что Jooq не поддерживает Instant.У вас есть идеи, как это сделать?Спасибо.