如何解决Scala Slick 仅存储案例类的选定字段
我有 2 个案例类
case class PPU(id : String,name : String,mini_ppus : List[MiniPPU]..)
case class MiniPPU( minPpuId : String,ppu_id : String.. )
我有一个 PPU 表,只想存储 id 和 name 而不是 mini_ppus。
class PpuTable(tag: Tag) extends Table[PPU](tag,None,_tableName ="ppu") {
def * = (id,name) <> (
{ tuple: (String,String) =>
PPU(id.asInstanceOf[String],name.asInstanceOf[String],ListBuffer[MiniPPU]().toList)},{ ppuTable: PPU => Option(ppuTable.id,ppuTable.name) }
)
val id = column[String]("ppu_id",O.PrimaryKey)
val name: Rep[String] = column[String]("name")
}
每当我试图从表格中选择一些东西时,我都会收到一个错误:
java.lang.ClassCastException: slick.relational.RelationalTableComponent$Table$$anon$1 cannot be cast to java.lang.String
重写 def * 方法的正确方法是什么?
解决方法
取而代之的是:
{ tuple: (String,String) => PPU(id.asInstanceOf[String],name.asInstanceOf[String],ListBuffer[MiniPPU]().toList)}
试试这个:
{ tuple: (String,String) => PPU(tuple._1,tuple._2,ListBuffer[MiniPPU]().toList)}
使用元组中的值,而不是在 <>
之前声明的值
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。