我使用
scala 2.11和slick 2.1.0并编译代码:
trait TSegmentClient { this: Profile => import profile.simple._ class SegmentClients(tag: Tag) extends Table[(Int,Long)](tag,"seg") { def segmentId = column[Int]("segment_id") def clientId = column[Long]("client_id") def * = (segmentId,clientId) } } segmentClients.insert(clientBehaviors.map(c => (1,c.clientId)))
有用.
但我需要一个像这样的案例类:
case class SegmentClient(segmentId: Int,clientId: Long) trait TSegmentClient { this: Profile => import profile.simple._ class SegmentClients(tag: Tag) extends Table[SegmentClient](tag,"seg") { def segmentId = column[Int]("segment_id") def clientId = column[Long]("client_id") def * = (segmentId,clientId) <> (SegmentClient.tupled,SegmentClient.unapply) } } segmentClients.insert(clientBehaviors.map(c => (1,c.clientId)))
但它没有编译.
(value: models.coper.datamining.SegmentClient)(implicit session:
scala.slick.jdbc.JdbcBackend#SessionDef)Int cannot be applied to
(scala.slick.lifted.Query[(scala.slick.lifted.Column[Int],
scala.slick.lifted.Column[Long]),(Int,Long),Seq])
segmentClients.insert(clientBehaviors.map(c => (segmentId,c.clientId)))
我的代码出了什么问题?
解决方法
您可以使用另一个投影到未映射到案例类的元组.
case class SegmentClient(segmentId: Int,"seg") { def segmentId = column[Int]("segment_id") def clientId = column[Long]("client_id") def tuple = (segmentId,clientId) def * = tuple <> (SegmentClient.tupled,SegmentClient.unapply) } } segmentClients.map(_.tuple).insert(clientBehaviors.map(c => (1,c.clientId)))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。