Scala Slick和我的数据库中的复杂类型
我对
Scala和Slick都很陌生,在尝试学习它时,我正在编写一个适用于简单数据库的小应用程序.
我以前的大多数经验来自.Net和实体框架,所以我想知道是否在Entity Framework中使用ComplexType属性,如果Slick允许我这样做. 基本上我的一个表是1-1关系,对于其中一些我更喜欢创建一个对象并将其用作复杂类型.显然在数据库中这只是表上的额外列,但我想知道Slick是否可以将这些列映射到Table类中的对象.见下面的例子. 我将使用博客条目示例. 扩展Table的主要类是BlogEntry,它包含条目的文本.然后说我想在那个类中另一个名为EntryDetails的类,它包含条目发布的时间和上次更新的时间. 在数据库中,所有这些字段都在同一个表中,但在读入时,它将是一个包含另一个对象的对象. Slick有可能吗? 解决方法
我认为这解决了你的问题
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] } 我将所有内容都包含在特征映射中,以便为您的答案打包代码.据我所知,您希望将表映射到两个对象,一个在另一个内,这可以通过创建另一个映射方法(此处称为entryDetails)来实现,该方法将表查询映射到EntryDetails模型对象.然后,您可以将此映射方法添加到对象映射*方法中. entryDetails方法只是该映射方法的另一个参数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Squeryl和Play的问题! scala中的框架
- shell – 当源文件不存在时,如何让’cp’命令不会触发错误?
- 为什么我只在VIM的某些项目中获得RSpec的语法高亮?
- Syncronous Scala Future没有单独的线程
- macos – 通过finder访问.bash_profile(不使用终端,因为当前
- 不用虚机不用Docker使用Azure应用服务部署ASP.NET Core程序
- 使用XFire开发WebService的简单例子
- codeforces766D Mahmoud and a Dictionary [并查集]【数据结
- 为Bootstrap模态对话框添加拖拽移动功能
- CXF—六天系列—第一天—CXF发布webservice--HelloWorld