我有使用默认server/editSupplier.jsp
的自定义源代码生成器,我希望它在处理PostgresProfile
类型时生成java.time.OffsetDateTime
列。我已经到了使用rawType但我不明白我应该覆盖什么才能使用导入的隐式映射器。
当我运行codegen任务时,它会导入java.sql.Timestamp
,但这样就可以了。生成的列继续为SlickColumnMappers
。
这对我来说是一个主要障碍。非常感谢帮助。
映射
java.sql.Timestamp
源代码生成器
object SlickColumnMappers {
implicit val TimestampToOffsetDateTime = MappedColumnType.base[OffsetDateTime, Timestamp](
dt => Timestamp.from(dt.withOffsetSameInstant(ZoneOffset.UTC).toInstant),
ts => OffsetDateTime.ofInstant(ts.toInstant, ZoneOffset.UTC)
)
}
答案 0 :(得分:0)
列映射允许您在Row模型中使用自定义类,但不会影响代码生成。要更改代码生成,您需要覆盖Table
SourceCodeGenerator
方法
override def Table = new Table(_) {
override def Column = new Column(_){
override def rawType = {
val superRawType = super.rawType
superRawType match {
case "java.sql.Timestamp" => "java.time.ZonedDateTime"
case "java.sql.Date" => "java.time.LocalDate"
case x => x
}
}
}