Scala 我可以从“中”获得一系列结果吗;作为「;在剧中使用Anrom时!框架

Scala 我可以从“中”获得一系列结果吗;作为「;在剧中使用Anrom时!框架,scala,playframework,playframework-2.0,scala-collections,anorm,Scala,Playframework,Playframework 2.0,Scala Collections,Anorm,可能重复: 当我在剧中使用阿诺姆时有这样的说法!框架: def all(): List[Note] = DB.withConnection { implicit c => SQL("select * from note").as(note *) } 它似乎返回了我的模型对象列表。我可以用不同的方法来实现这一点吗?这样我就可以得到一个流[Note],这样它就可以“延迟”加载行了?或者,尽管它声称要返回一个列表,但它已经不知何故返回了 换句话说,如果我执行all().head,我

可能重复:

当我在剧中使用阿诺姆时有这样的说法!框架:

def all(): List[Note] = 
    DB.withConnection { implicit c => SQL("select * from note").as(note *) }
它似乎返回了我的模型对象列表。我可以用不同的方法来实现这一点吗?这样我就可以得到一个流[Note],这样它就可以“延迟”加载行了?或者,尽管它声称要返回一个列表,但它已经不知何故返回了

换句话说,如果我执行all().head,我希望它只获取第一行。在我看来,“as”之前是一个流,但在“as”之后是一个列表。

检查此链接

您可以使用
apply()
方法而不是
as()
来获取流,但随后您必须自己解析便笺。

我昨天问过,所以您可能想检查一下。我为你的问题提供了一个解决方案,但我的问题是如何以更优雅/简洁的方式实现同样的目标

如果您生成了一个
列表
,那么它并没有什么惰性,您的整个结果都会被解析并返回。但是,即使使用
,出于性能原因,也应该尝试减少查询中已有的行数。例如,如果您只对前n行感兴趣,则应添加
限制n
,否则仍将查询数据库中的所有行,并且在使用
而不是
列表
时,您只需通过不解析它们来节省一点时间