これで問題は解決すると思います
trait Mapping {
//Need to change JdbcDriver to the driver that you will use in your code (MySql, Postgres, etc)
import scala.slick.driver.JdbcDriver.profile.simple._
// Models
case class EntryDetails(createDate: Option[DateTime] = None, updateDate: Option[DateTime] = None)
case class Entry(id: Int, text: String, details: EntryDetails)
//Implicit Joda Mappers for datetime columns
implicit def timestamp2dateTime = MappedColumnType.base[DateTime, Timestamp](
dateTime => new Timestamp(dateTime.getMillis),
date => new DateTime(date))
//Table mapping
class Entries(tag: Tag) extends Table[Entry](tag, "entry") {
def entryDetails = (createDate, updateDate) <>(EntryDetails.tupled, EntryDetails.unapply)
def * = (id, text, entryDetails) <>(Entry.tupled, Entry.unapply)
val id: Column[Int] = column[Int]("id")
val text: Column[String] = column[String]("text")
val createDate: Column[Option[DateTime]] = column[Option[DateTime]]("createDate")
val updateDate: Column[Option[DateTime]] = column[Option[DateTime]]("updateDate")
}
//Table query, used in slick 2.0 for querying a table
lazy val EntryTableQuery = TableQuery[Entries]
}
回答のコードをパックするために、すべてを特性マッピングに含めました。私が理解している限りでは、テーブルを 2 つのオブジェクトにマップし、一方を他方の内部にマップしたいと考えています。これは、テーブル クエリを EntryDetails モデル オブジェクトにマップする、ここでは entryDetails と呼ばれる別のマッピング メソッドを作成することで実現できます。次に、このマッピング メソッドをオブジェクト マッピングの * メソッドに追加できます。メソッド entryDetails は、そのマッピング メソッドの単なる別のパラメーターになります。