幻像映射 Java 8 LocalDateTime 到 Joda 时间
Phantom Mapping Java 8 LocalDateTime to Joda Time
我正在使用 Phantom 1.28 和 Cassandra 3.7。
我有一个案例 class Java 8 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
)
}
编译错误:
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),
我喜欢坚持 Java 8 LocalDateTime,如何解决 OptionDateTimeColumn
需要 joda 时间?或者有更好的方法吗?
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))
}
在最近的版本中你可以这样做:
object date extends Col[LocalDateTime] with PrimaryKey
我正在使用 Phantom 1.28 和 Cassandra 3.7。
我有一个案例 class Java 8 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
)
}
编译错误:
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),
我喜欢坚持 Java 8 LocalDateTime,如何解决 OptionDateTimeColumn
需要 joda 时间?或者有更好的方法吗?
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))
}
在最近的版本中你可以这样做:
object date extends Col[LocalDateTime] with PrimaryKey