Scala 为trait中由同名对象实现的类播放json OWrites
当slick生成代码时,是这样的(sample1/Tables.scala):Scala 为trait中由同名对象实现的类播放json OWrites,scala,playframework,slick,play-json,play-slick,Scala,Playframework,Slick,Play Json,Play Slick,当slick生成代码时,是这样的(sample1/Tables.scala): 包样本1 对象表扩展{ val配置文件=??? }有桌子 性状表{ 案例类Class1Row(num:Int) } 我只想使用play json转储db对象,所以我需要OWrites(在sample1/X.scala中): 包样本1 导入play.api.libs.json.{json,Writes} 对象X{ 隐式val ClassWrites:Writes[Tables.ClassRow]=Json.Write
包样本1
对象表扩展{
val配置文件=???
}有桌子
性状表{
案例类Class1Row(num:Int)
}
我只想使用play json转储db对象,所以我需要OWrites(在sample1/X.scala中):
包样本1
导入play.api.libs.json.{json,Writes}
对象X{
隐式val ClassWrites:Writes[Tables.ClassRow]=Json.Writes[Tables.ClassRow]
}
在编译时,它会抱怨:
sample1/X.scala:6:68
type mismatch;
found : Tables.this.Class1Row => Option[Int]
required: sample1.Tables.Class1Row => Option[Int]
implicit val class1Writes: Writes[Tables.Class1Row] = Json.writes[Tables.Class1Row]
当我已经在val赋值的两侧指定了相同的类型时,为什么会出现编译问题?在谷歌搜索了一段时间(很多小时)后,发现这是一个没有修复的已知问题
关门了。
目前正在开放
我现在通过使用从slick的代码生成器扩展而来的自定义代码生成器来解决这个问题,该生成器将案例类置于trait之外,如下所示: