ORMにScala、JodaTime、Squerylを使用する。アプリケーションが起動すると、JodaTimeを使用して生成されたタイムスタンプが呼び出されるたびに再初期化されないという厄介な問題があります。代わりに、時間を1回設定し、SQLが呼び出されるたびに煩わしく再初期化することはありません。
以下のコード。まず、時間パラメータ:
val todayEnd = new Timestamp(new DateMidnight(now, DateTimeZone.forID("America/Los_Angeles")).plusDays(1).getMillis())
そしてSquerylJOIN:
join(DB.jobs, DB.clients.leftOuter, DB.projects.leftOuter)((j,c,p) =>
where((j.teamId === teamId)
and (j.startTime < todayEnd)
and (j.userId isNotNull)
and (j.canceled === false)
and (j.completed === false))
select(j,c,p)
on(j.clientId === c.map(_.id), j.projectId === p.map(_.id)))
奇妙な部分は、 JodaTimeなしtodayEnd
でタイムスタンプを生成すると、毎回再初期化されることです。では、JodaTimeは何が違うのでしょうか?