У меня возникла следующая проблема.Squeryl: как сравнить опцию [T] объектов в where where?
У меня есть класс, скажем, пост, который выглядит как:
case class Post (
id: Int,
slug: String,
title: String,
@Column("postText")
text: String,
isVisible: Boolean,
created: Timestamp,
lastUpdated: Timestamp,
published: Option[Timestamp]
) extends KeyedEntity[Int]
Моя проблема заключается, чтобы получить предыдущие и последующие сообщения из базы данных, когда посты в заказанные опубликовано поле. Проблема, с которой я столкнулся, заключается в том, что опубликованное поле - опция [Timestamp]. Я создал запрос Squeryl вроде этого:
val nextPost = from(postTable)(p =>
where((p.published > post.published) and p.isVisible === true)
select(p)
orderBy(p.published asc)
).page(0, 1)
И когда я смотрел на приведённом SQL я увидел что-то вроде этого: "... WHERE post.published> Некоторые из них (" .... ") .. . " и, конечно, это привело к синтаксической ошибке в SQL-запросе.
Я просмотрел документацию, но не могу найти ответ. Я уже думал о переходе на Slick ...
UPDATE
Существует определенная ошибка в squeryl тузда построении запросов. Я закончил с
val x : Timestamp = post.published.getOrElse(new Timestamp(0))
val nextPost = from(postTable)(p =>
where((p.published.getOrElse(new Timestamp(0)) > x) and p.isVisible === true)
select(p)
orderBy(p.published asc)
).page(0, 1)
, который производит запрос:
Select
Post9.lastUpdated as Post9_lastUpdated,
Post9.published as Post9_published,
Post9.postText as Post9_postText,
Post9.slug as Post9_slug,
Post9.id as Post9_id,
Post9.isVisible as Post9_isVisible,
Post9.title as Post9_title,
Post9.created as Post9_created
From
Post Post9
Where
((Post9.published > 2013-08-01 14:21:25.0) and (Post9.isVisible = true))
Order By
Post9.published Asc
limit 1 offset 0
см, как конструктор запросов, отформатированный дату ...
Я переключение на SLICK.
Какая версия Squeryl была такой? –
Я посмотрел на свою конфигурацию sbt, это было 0.9.5-6 –
Я понимаю, что если вы переехали и у вас нет времени, но мне бы хотелось увидеть воспроизводимый тестовый пример, чтобы мы могли вместе исправить если это ошибка. Вы можете опубликовать его здесь или (предпочтительно) в списке Squeryl https://groups.google.com/forum/#!forum/squeryl. –