油滑2.1 斯卡拉2.11.7斯利克 - 龍的到的java.sql.Timestamp
隱式轉換無法獲取隱式轉換爲長< - >的java.sql.Timestamp或java.sql.Date工作。我有他們的工作對於其他轉換,如JodaTime.DateTime < - > java.sql.Timestamp中......
例如,在查詢返回的錯誤:
org.postgresql.util.PSQLException: ERROR: operator does not exist:
timestamp with time zone >= bigint Hint: No operator matches
the given name and argument type(s). You might need to add explicit type casts.
Position: 325
這些都是implicits,他們是絕對正確導入在範圍:
implicit val LongToTimestamp = MappedColumnType.base[java.lang.Long, Timestamp](
longTS => new Timestamp(longTS),
sqlTS => sqlTS.getTime
)
implicit val LongToDate = MappedColumnType.base[java.lang.Long, java.sql.Date](
longTS => new java.sql.Date(longTS),
sqlDate => sqlDate.getTime
)
:
implicit val LongToTimestamp = MappedColumnType.base[Long, Timestamp](
longTS => new Timestamp(longTS),
sqlTS => sqlTS.getTime
)
implicit val LongToDate = MappedColumnType.base[Long, java.sql.Date](
longTS => new java.sql.Date(longTS),
sqlDate => sqlDate.getTime
)
我也使用java.lang.Long中,而不是試圖10
我在這裏錯過了什麼?謝謝!
-
附加信息:
查詢方法被定義爲(排隊是一個的java.sql.Timestamp):
def getJobs(jobTypeId: Short, onOrAfter: DateTime): Seq[JobRow] = {
val q1 = for{j <- Jobs if j.jobTypeId === jobTypeId && j.queued >= onOrAfter.getMillis} yield j
db.withSession{ implicit s =>
q1.buildColl[Seq]
}
}
表定義:
class Jobs(tag: Tag) extends Table[JobRow](tag, "job") {
def jobId = column[Long]("job_id", O.PrimaryKey, O.NotNull)
def jobTypeId = column[Short]("job_type_id", O.NotNull)
def queued = column[Long]("queued", O.NotNull)
def * = (jobId, jobTypeId, queued) <>((JobRow.apply _).tupled, JobRow.unapply_)
def pk = primaryKey("job_pk", jobId)
}
問題不在於你的映射,而在於你的查詢 - 你能告訴我們你是如何生成查詢的嗎? (Long正在被綁定,沒有被轉換爲Timestamp,導致錯誤)。或者,您的暗示有可能被Slick的默認暗示遮蔽。 –
謝謝你的採訪。我添加了表格定義和查詢示例。這感覺就像你的第二個想法,Slick的默認含義被忽略了,而我的被忽略了。不知道如何解決它。 – user1661898