我想从数据库中读取元素,并将它们作为JSON对象返回。
Scalatra被设置为返回JSON。创建了Databaseschema。添加了玩家。
以下代码似乎是主要问题:
get("/") {
inTransaction {
List(from(MassTournamentSchema.players)(s => select(s)))
}
}我得到以下错误:“没有会话绑定到当前线程,必须通过Session.create创建会话,并通过'work‘或'bindToCurrentThread’绑定到线程。通常,当在事务/内部事务块之外执行语句时,会出现此错误。”
我想做的是正确的,所以简单地添加像"Session.create“这样的东西可能不是真正正确的方式。
任何人都可以帮助一个scalatra noob吗?:-)
发布于 2014-10-19 02:04:02
我认为你的评论是正确的。JDBC块将把inTransaction连接绑定到线程局部变量,并在该变量上启动连接。如果select没有发生在同一线程上,您将看到与收到的错误类似的错误。有两件事我建议你尝试一下:
稍后开始您的事务
List(inTransaction {
from(MassTournamentSchema.players)(s => select(s))
})我不熟悉Scalatra的列表,但它可能接受一个按名称的参数,然后在另一个线程上执行它。
强制对查询进行紧急求值
inTransaction {
List(from(MassTournamentSchema.players)(s => select(s)).toList)
}https://stackoverflow.com/questions/26431955
复制相似问题