请看这个例子:
https://github.com/max-l/squeryl-extended-field-types-example/blob/master/src/main/scala/example/MyCustomTypes.scala
在您的情况下,您将 TTimestamp 替换为 TLong (支持 JDBC 类型),将 DateTime 替换为 Date (尽管您可能需要考虑使用 joda 日期)。
implicit val dateAsLongTEF = new NonPrimitiveJdbcMapper[Long, Date, TLong](longTEF, this) {
def convertFromJdbc(v: Long) = new Date(v)
def convertToJdbc(v: Date) = v.getTime
}
implicit val optionDateAsLongTEF =
new TypedExpressionFactory[Option[Date], TOptionLong]
with DeOptionizer[Long, Date, TLong, Option[Date], TOptionLong] {
val deOptionizer = dateAsLongTEF
}
注意:您使用 TLong 和 TOptionLong 的事实意味着您将能够将数字列与 DSL 中的长支持列进行比较。
更新:有一个限制阻止重新注册原始类型,所以你需要一个包装器类型,我更新了 github 项目中的示例......