scala – slick过滤器或不再支持逻辑运算的地方?
发布时间:2020-12-16 09:53:49 所属栏目:安全 来源:网络整理
导读:我使用slick 2.0.2并且我只想做一个简单的过滤器或使用where子语句,我只想在过滤器中执行“and”,“or”和“not”等逻辑操作: val subjectdata = TableQuery[SubjectTable]...subjectdata.where(i=(i.id===id i.userId===rs.user.get.identityId.userId)).l
我使用slick 2.0.2并且我只想做一个简单的过滤器或使用where子语句,我只想在过滤器中执行“and”,“or”和“not”等逻辑操作:
val subjectdata = TableQuery[SubjectTable] ... subjectdata.where(i=>(i.id===id && i.userId===rs.user.get.identityId.userId)).list() 并得到错误: [error] G:testprojectsslickplayappcontrollersShopController.scala:89: Cannot perform option-mapped operation [error] with type: (Long,String) => R [error] for base type: (Long,Long) => Boolean [error] subjectdata.where(i=>(i.id===id && i.userId===rs.user.get.identityId .userId)).list() [error] ^ 在光滑的1.0.1我可以这样做: val results = Query(TableClass) .filter(r => r.isNull || r.expires > new Timestamp(DateTime.now().getMillis())) .list 我想在Slick2中的TableQuery上做类似的事情.怎么做? 解决方法
有一点需要知道的是,Slick的操作对于类型比Scala更严格.两个操作数必须具有相同的基本类型,可选地包含在选项中.因此比较Double to Double或Option [Double]是可以的,但将它与Int进行比较会给你这样的编译时间警告.错误消息提示您解决问题
[error] G:testprojectsslickplayappcontrollersShopController.scala:89: Cannot perform option-mapped operation [error] with type: (Long,Long) => Boolean [error] subjectdata.where(i=>(i.id===id && i.userId===rs.user.get.identityId .userId)).list() In(Long,String)=>你看到参数没有匹配的类型,并且无法确定返回类型.所以我假设id或rs.user.get.identityId是一个String.使用.toInt转入Int.或者,您可以使用.asColumnOf [String]转换db-side值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |