Anorm 2.5.2 и java.time LocalDateTime как датаAnorm сравнить/поиск по java.time LocalDateTime
val users = SQL(
s"SELECT * FROM user WHERE name={name} AND registered_date={registeredDate}").on(
"name" -> user.name,
"registeredDate" -> user.registeredDate
).executeQuery().as(userParser.*)
Я обнаружил, что даже если у меня есть такая же name1 и тот же DateTime (момент) в база данных, запрос возвращается пустым users
- не может найти/сопоставить.
Так что кажется, что он не может сравниться по дате. Почему это может быть?
Я смог правильно установить местное время-дату (см.: related) в базу данных (я имею в виду, что преобразование между типами db и scala включено) - I.e. Я использую:
import anorm.ParameterMetaData._
(который расширяет JavaTimeParameterMetaData)
Мой userParser:
val userParser: RowParser[User] = {
get[Option[Long]]("user.id") ~
get[String]("user.name") ~
get[LocalDateTime]("user.registered_date") map {
case id ~ name ~ registeredDate =>
User(
id = id ,
name = name,
registeredDate = registeredDate
)
}
}
Мой пользователь:
case class User(id: Option[Long] = None,
name: String,
registeredDate: LocalDateTime
)
Какую базу вы используете? Действительно ли сырой запрос работает? –
mysql. когда я запрашиваю только по имени - у меня много пользователей. (потому что в моем db есть много пользователей с таким же именем). я думаю, мне нужно увидеть db-raw-queries, так как db получает их, чтобы увидеть, какие значения tt фактически сравниваются с – ses
. Anorm, как и любая другая, основанная на JDBC lib, не сравнивает/не ищет строки сама по себе, а просто отправляет запрос в базу данных , поэтому добавьте отладку для регистрации значений параметров и проверьте запрос с этим. – cchantep