首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Slick为java.time.LocalDate创建自定义列映射

使用Slick为java.time.LocalDate创建自定义列映射
EN

Stack Overflow用户
提问于 2015-09-07 19:01:11
回答 1查看 2K关注 0票数 5

我使用的是灵活的3.1.0M2,我希望在我的表中使用java.time.LocalDate和java.time.LocalTime。我这样做:

代码语言:javascript
复制
import java.sql.{Date, Time, Timestamp}
import java.time.{LocalDate, LocalTime, LocalDateTime, ZoneOffset}

trait DateTimeColumns {

  import slick.driver.PostgresDriver.api._

  implicit val localDateTimeColumnType = MappedColumnType.base[LocalDateTime, Timestamp](
    d => Timestamp.from(d.toInstant(ZoneOffset.ofHours(0))),
    d => d.toLocalDateTime
  )

  implicit val dateColumnType = MappedColumnType.base[LocalDate, Date](
    d => Date.valueOf(d),
    d => d.toLocalDate
  )

  implicit val timeColumnType = MappedColumnType.base[LocalTime, Time](
    localTime => Time.valueOf(localTime),
    time => time.toLocalTime
  )
}

因此,我有3个隐式映射,但只有第一个映射编译。使用java.sql.Date和java.sql.Time的编译失败的有:

代码语言:javascript
复制
could not find implicit value for evidence parameter of type slick.driver.PostgresDriver.BaseColumnType[java.sql.Date]

当我在IntelliJ中进行隐式参数检查时,可以看到第一个映射在文件JdbcTypesComponent.scala中找到了TimestampJdbcType。就在它旁边,我看到了TimeJdbcType和DateJdbcType。为什么第一个被发现了,而其他的却找不到?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-08 04:19:04

如果您检查slick.driver.JdbcTypesComponent,,您会发现一个trait ImplicitColumnTypes包含了很多列类型的关联,包括:

代码语言:javascript
复制
implicit def timeColumnType = columnTypes.timeJdbcType
implicit def dateColumnType = columnTypes.dateJdbcType

您定义的后两个与默认名称具有相同的名称。

在导入工作时,更改它们的名称或重命名默认的名称。

代码语言:javascript
复制
import slick.driver.PostgresDriver.api._
import slick.driver.PostgresDriver.api.{ timeColumnType => DefaultTimeColumnType }

implicit val myDateColumnType = MappedColumnType.base[LocalDate, Date](
    ld => Date.valueOf(ld),
    d => d.toLocalDate
)

implicit val timeColumnType = MappedColumnType.base[LocalTime, Time](
    localTime => Time.valueOf(localTime),
    time => time.toLocalTime
)
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32444676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档