2016-09-01 14 views
1

私はCassandra 3.7でPhantom 1.28を使用しています。ファントムマッピングJava 8 LocalDateTime to Joda Time

私は、Java 8 LocalDateTimeの場合のクラスがあります:ファントムモデルで

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

を:

コンパイルエラー:

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時間が必要ですか?それとも良い方法がありますか?

答えて

2

ファントムはまだ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)) 
} 
関連する問題