与日期相关的光滑模式投影问题

时间:2018-05-31 16:50:07

标签: scala slick-3.0

我正在尝试在光滑的3.2中为简单表创建一个模式。我对scala很新,所以这可能是一个愚蠢的问题。当我尝试删除日期投影似乎工作正常,我能够运行选择查询罚款,但当我添加日期,我甚至无法编译代码。

以下是我的架构代码:

import slick.jdbc.OracleProfile.api._
import java.sql.Date

class User(tag: Tag)
  extends slick.jdbc.OracleProfile.api.Table[(Long , String , Date)](tag, "USR") {

  def usr_arch_dt : Rep[Date]= column[Date]("USR_ARCH_DT")
  def usr_id : Rep[Long] = column[Long]("USR_ID", O.PrimaryKey)
  def usr_subj_txt : Rep[String]= column[String]("USR_SUBJ_TXT")

  def * : (Long, String,  Date) =
    (usr_id , usr_subj_txt , usr_arch_dt) // I see mentioned error here

}

我在Intellij中看到的异常或错误是:

Rep [Long]类型的表达式不符合预期类型Long。

如果我能够编译此代码,我希望基于类似

的日期范围进行搜索
val filterQuery: Query[User, (Long, String , Date), Seq] =
        ntfns.filter(_.usr_arch_dt > Calendar.getInstance().getTime )

谢谢!

2 个答案:

答案 0 :(得分:1)

您的sudo yum install dos2unix看起来有额外的def * : (Long, String, String, Date)

在日期搜索中,您的过滤查询无法正常工作String附带有限的方法。 Slick的一个常见做法是在java.sql.Date和功能更丰富的Joda Time之间创建一个隐式映射器:

java.sql.Date

这是一个相关的SO link

答案 1 :(得分:0)

谢谢@Leo,额外的字符串是一个错字,我现在将其从问题中删除,以便其他人受益。下面的代码对我有用:

case class User(tag: Tag)
  extends slick.jdbc.OracleProfile.api.Table[(Long , String , Date)](tag, "USR") {

  def usr_arch_dt : Rep[Date]= column[Date]("USR_ARCH_DT")
  def usr_id : Rep[Long] = column[Long]("USR_ID", O.PrimaryKey)
  def usr_subj_txt : Rep[String]= column[String]("USR_SUBJ_TXT")

  def * = (usr_id  , usr_subj_txt , usr_arch_dt)
}

我仍然需要查看过滤器,我会尝试您的方法并让您知道结果。