0

重複の可能性:
RowParserの出力としてストリームを取得する簡単な方法はありますか?

PlayでAnormを使用しているときに、このようなステートメントがある場合!フレームワーク:

def all(): List[Note] = 
    DB.withConnection { implicit c => SQL("select * from note").as(note *) }

モデルオブジェクトのリストが返されるようです。これを別の方法で実行して、代わりにStream [Note]を取得して、行の「遅延」読み込みを実行できますか?または、リストを返していると主張しているにもかかわらず、すでに何らかの形で存在している可能性があります。

つまり、all()。headを実行する場合は、最初の行のみをフェッチする必要があります。「as」の前はストリームとして始まりますが、「as」の後にはリストであるように見えます。

4

2 に答える 2

2

昨日もよく似た質問をしたので、ぜひチェックしてみてください。私はあなたの問題の解決策を示しましたが、私の質問は同じことを達成するためのよりエレガントで簡潔な方法を持つことについてでした。

を生成する場合List、それについて怠惰なことは何もありません。結果全体が解析されて返されます。ただし、を使用する場合でも、Streamパフォーマンス上の理由から、クエリにすでに含まれている行の数を減らすようにしてください。たとえば、最初のn行のみに関心がある場合は、を追加する必要があります。そうしないと、データベースは引き続きすべての行についてクエリされ、の代わりlimit nに使用するときにそれらを解析しないことで、少し時間を節約できます。StreamList

于 2012-11-08T13:48:00.907 に答える
-1

このリンクを確認してくださいhttp://www.playframework.org/documentation/2.0/ScalaAnorm

apply()の代わりにメソッドを使用しas()てストリームを取得できますが、その場合はノートを自分で解析する必要があります。

于 2012-11-08T11:56:55.187 に答える