【发布时间】:2014-10-17 19:19:06
【问题描述】:
我想从数据库中读取元素并将它们作为 JSON 对象返回。
Scalatra 设置为返回 JSON。 数据库模式已创建。 已添加玩家。
以下代码似乎是主要问题:
get("/") {
inTransaction {
List(from(MassTournamentSchema.players)(s => select(s)))
}
}
我收到以下错误: “没有会话绑定到当前线程,必须通过 Session.create 创建会话并通过 'work' 或 'bindToCurrentThread' 绑定到线程通常当语句在事务/inTrasaction 块之外执行时会发生此错误“
我想正确地做,所以简单地添加诸如“Session.create”之类的东西可能不是正确的方法。
任何人都可以帮助一个scalatra-noob吗? :-)
【问题讨论】:
-
我认为,问题在于我的设置。我按照 scalatra 网站上的说明获取 JSON 作为标准输出。我的代码返回新创建的列表。但是:http://squeryl.org/selects.html“[...] 查询仅在开始迭代时发送到数据库,或者换句话说,当调用 Iterable.iterator 时。[...]”这可能会自动发生(配置 scalatra 以返回JSON),但在我的情况下,在“inTransaction {...}”块之外 - 最终也在线程之外(?)。有人有想法吗?