加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何在Slick 3.0中计算(*)?

发布时间:2020-12-16 18:39:26 所属栏目:安全 来源:网络整理
导读:我已经使用Slick很长一段时间了,现在我正在从Slick 2.1迁移到3.0.不幸的是,我遇到了像计数线这样的普通东西.当我以前这样做时,我的代码在Slick 2.1中完美运行: connection.withSession { implicit session = coffees.length.run} 在上面的代码中,我会得到我
我已经使用Slick很长一段时间了,现在我正在从Slick 2.1迁移到3.0.不幸的是,我遇到了像计数线这样的普通东西.当我以前这样做时,我的代码在Slick 2.1中完美运行:

connection.withSession {
  implicit session => coffees.length.run
}

在上面的代码中,我会得到我的结果作为Int,但是在我转移到Slick 3.0.2 though the documentation tells me that the code should be the same之后我现在无法让它工作.

我尝试了以下内容(我已经删除了withSession不推荐的调用):

connection.createSession.withTransaction {
  coffees.length
}

但是这段代码将返回一个slick.lifted.Rep [Int],它没有任何方法来获取整数值.我错过了一些隐含的导入吗?

解决方法

正如您可能已经意识到的那样,运行调用的结果是生成一个Future,它将在稍后的某个时刻解决.

虽然这意味着最终在代码的某个地方,未来需要以你在答案中显示的方式等待,这可以而且应该尽可能晚地推迟.如果您正在使用Play框架,请使用异步操作并让Play为您处理.

与此同时,使用Future和任何其他monadic构造(如Option)一样 – 调用map,flatMap,onSuccess等,以便在传播的Future上下文中链接计算.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读