Учитывая представление класса case строки данных с помощью java.sql.Timestamp
:
case class ExampleRow(id: String, ts: Timestamp)
И запрос, ожидающий ExampleRow
:
import doobie._
import doobie.implicits._
import doobie.postgres.implicits._
val queryExampleRows =
sql"select * from example".query[ExampleRow].to[List]
В результате возникает ошибка компиляции:
Не удается найти или создать экземпляр Read для типа:
ПримерСтрока
Это удивительно, учитывая, что в документации утверждается, что Timestamp должен работать. Кроме того, я знаю, что причиной является Timestamp, потому что удаление этого члена приводит к компиляции кода.
Как класс case может содержать временную метку и может быть запрошен doobie?
Есть похожий вопрос , но я не могу понять, применим ли он к моему вопросу, поскольку он включает параметр типа T
, а не конкретный тип, такой как Timestamp.
Заранее благодарю за внимание и ответ.
Разве java.sql.Timestamp
не является устаревшим классом, который нельзя использовать годами? Используйте java.time
, когда это возможно.
Согласно предложению из комментариев проблема была решена путем перехода типа с java.sql.Timestamp
на java.time.Instant
.
Попробуйте
import doobie.implicits.javasql._