首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scalatra < squeryl <全选|始终

scalatra < squeryl <全选|始终
EN

Stack Overflow用户
提问于 2014-10-18 03:19:07
回答 1查看 148关注 0票数 0

我想从数据库中读取元素,并将它们作为JSON对象返回。

Scalatra被设置为返回JSON。创建了Databaseschema。添加了玩家。

以下代码似乎是主要问题:

代码语言:javascript
复制
get("/") {
  inTransaction {
    List(from(MassTournamentSchema.players)(s => select(s)))
  }
}

我得到以下错误:“没有会话绑定到当前线程,必须通过Session.create创建会话,并通过'work‘或'bindToCurrentThread’绑定到线程。通常,当在事务/内部事务块之外执行语句时,会出现此错误。”

我想做的是正确的,所以简单地添加像"Session.create“这样的东西可能不是真正正确的方式。

任何人都可以帮助一个scalatra noob吗?:-)

EN

回答 1

Stack Overflow用户

发布于 2014-10-19 02:04:02

我认为你的评论是正确的。JDBC块将把inTransaction连接绑定到线程局部变量,并在该变量上启动连接。如果select没有发生在同一线程上,您将看到与收到的错误类似的错误。有两件事我建议你尝试一下:

稍后开始您的事务

代码语言:javascript
复制
List(inTransaction {
  from(MassTournamentSchema.players)(s => select(s))
})

我不熟悉Scalatra的列表,但它可能接受一个按名称的参数,然后在另一个线程上执行它。

强制对查询进行紧急求值

代码语言:javascript
复制
inTransaction {
  List(from(MassTournamentSchema.players)(s => select(s)).toList)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26431955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档