将Java 8 LocalDateTime映射到Joda时间

时间:2016-09-01 10:28:53

标签: scala phantom-dsl

我正在使用Phantom 1.28和Cassandra 3.7。

我有一个带有Java 8 {1}}的案例类:

LocalDateTime

在幻影模型中:

case class User(
   verifiedAt: Option[LocalDateTime] = None
)

编译错误:

class UserModel extends CassandraTable[ConcreteUserModel, User]{

object verified_at extends OptionalDateTimeColumn(this)

override def fromRow(r: Row): User = User(
    verified_at(r),  // <- compile error
)
}

我喜欢坚持Java 8 LocalDateTime,我如何解决error: type mismatch; [ERROR] found : Option[com.websudos.phantom.dsl.DateTime] [ERROR] (which expands to) Option[org.joda.time.DateTime] [ERROR] required: Option[java.time.LocalDateTime] [ERROR] verified_at(r), 需要joda时间?或者有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

Phantom仍然兼容JDK7,这对我们来说非常重要,这就是为什么不直接支持Java 8时间的原因,但它有单独的模块。在你的构建中。

libraryDependencies ++= Seq(
  "com.websudos" %% "phantom-jdk8" % phantomVersion
)

然后你需要:

import com.websudos.phantom.dsl._
import com.websudos.phantom.jdk8.dsl._

class UserModel extends CassandraTable[ConcreteUserModel, User]{

  // This will not return Option[LocalDate], it will return simply LocalDate
  object verified_at extends JdkLocalDateColumn(this)

  override def fromRow(r: Row): User = User(verified_at(r))
}

Here are可用于Java 8的所有列。对于可选列:

import com.websudos.phantom.dsl._
import com.websudos.phantom.jdk8.dsl._

class UserModel extends CassandraTable[ConcreteUserModel, User]{

  object verified_at extends OptionalPrimitiveColumn[ConcreteUserModel, User, JdkLocalDate](this)

  override def fromRow(r: Row): User = User(verified_at(r))
}

答案 1 :(得分:0)

在最新版本中,您可以这样做:

object date extends Col[LocalDateTime] with PrimaryKey