[Scala Slick ]slick.SlickException: Read NULL value for ResultSet column <computed>

前言

在使用Slick的时候,遇到了各种各样貌似不可控的问题。比如使用同样的语法查一张表可以,但是查另外一张表就报奇奇怪怪的错误。像今天的slick.SlickException: Read NULL value for ResultSet column <computed>

用Scala的国内目前很少,用Slick就更少了,跌跌撞撞总算找到了答案,现在记录下来。

微信公众号:大数据报文

正文

我的代码:

//查询id为2的数据
val res = Await.result(userDAL.findById(2),Duration.Inf)
override def findById(id: Int): Future[Option[User]] = db.run(userTable.filter(_.id === id).result.headOption)

首先需要看一下自己为表定义的Schema

//这里并没有规定某一列可以是空的
class UserTable(tag: Tag) extends Table[User](tag, "user") {
    override def * : ProvenShape[User] = (id, nickName, phone, gender,password) <> (User.tupled,User.unapply)

    val id = column[Int]("id")
    val nickName = column[String]("nickname")
    val phone = column[String]("phone")
    val gender = column[Short]("gender")
    val password = column[String]("password")

}

再看一下表中的数据,发现id为2的行是空的

是了问题就出在这里。schema中没有为空值规定默认值,而又出现了不允许的空值,因此报错

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值