postgresql - Scala Slick 类表定义,错误声明 DateTime 列
问题描述
下面是我在创建表定义时在 Datetime 列上出现编译错误的 DB 类。
Created_on 应该在更新当前日期
updated_on 应该只模拟传递的日期。
包装表
import play.data.format.Formats.DateTime import slick.driver.PostgresDriver.api._ object Main { case class Account( id: Long = 0L, owner: Long, name: String, created_on: DateTime, updated_on: DateTime, author_id: Long, updated_by: Long, external_id: String )
类 AccountTable(tag: Tag) 扩展 TableAccount {
def id = column[Long]("id") def owner= column[Long]("id") def name= column[String]("name") def created_on= column[DateTime]("created_on") def updated_on= column[DateTime]("updated_on") def author_id= column[Long]("author_id") def updated_by= column[Long]("updated_by") def external_id= column[String]("external_id") def * = (owner, name, created_on, updated_on,author_id,updated_by,external_id) <> (Account.tupled, Account.unapply)
}
}
解决方案
我不确定DateTime
你使用的是什么类。也许是乔达时代的DateTime
课程?
为此,您需要提供从DateTime
Slick 知道的类型(以及对数据库中的列有意义的类型)的映射。例如,您可以映射DateTime
到Timestamp
:
import java.sql.Timestamp
import org.joda.time.DateTime
import org.joda.time.DateTimeZone.UTC
// And in your `Main`...
implicit val jodaDateTimeType =
MappedColumnType.base[DateTime, Timestamp](
dt => new Timestamp(dt.getMillis),
ts => new DateTime(ts.getTime, UTC)
)
...例如。这是在教 Slick 如何将 from 转换DateTime
为它知道的类型 ( Timestamp
)。
在Essential Slick的第 5 章中有一个关于这方面的教程。
从 Slick 3.3 开始,内置了对许多标准 Java 时间格式的支持,如发行说明中所述。
此外,从 Slick 3 开始,您可以.mapTo
在大多数情况下使用映射类。它比阅读要好得多<>
:
def * = (
owner, name, created_on, updated_on, author_id, updated_by, external_id
).mapTo[Account]
推荐阅读
- c# - TagBuilder 查找特定的内部元素并添加新属性
- cookies - _abck 和 bm_sz 的用途是什么?
- flutter - 异步函数不等待
- google-analytics - 行为部分中的 Google 分析事件未显示
- css - 渐变动画使 CSS 无法在 Internet Explorer/Edge/Safari 上正确显示
- z3 - 变量是否有最大值大小?
- java - 在 RecyclerView 中显示多个数据时出现 java.lang.IndexOutOfBoundsException
- java - 检索 Apache circularfifobuffer 中最后一项的计算效率最高的方法是什么?
- r - ggplot2 堆积条形图,每个 X 变量 2 个条形图
- scala - Spark 会话目录失败