ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

AsakusaFW Viewから1レコード取得する方法

2021-12-18 23:34:16 | PG(分散処理)

AsakusaFW & Tsurugi Advent Calendar 2021の18日目です。

AsakusaFWにはViewというものがあって、少量データが対象ですが、ユーザー演算子でデータを自由に読むのに使えます。(GroupViewはキーあり、Viewはキー無しという位置づけ)
Viewは複数レコードを対象としていて、JavaのIterableを継承しているので、Iteratorパターンやfor文でループして扱うのが基本です。

for(Iterator i = view.iterator(); i.hasNext();;) {
  DataModel model = i.next();
  ~
}

for(DataModel model : view) {
  ~
}

一方、Viewは読み込み専用のグローバル変数のようなものを扱いたいときに便利で、そういう使い方をするときは、必ず1レコードだけ存在していると想定してよいでしょう。
そうすると、わざわざループで1レコード取得するのはちょっと冗長です。
ViewはIteratorを取得できるので、view.iterator().next();として1レコード取得したいところですが、AsakusaFWのViewはhasNext()を必ず呼ぶ想定になっているようで、例外が発生してしまいますorz
(この事象はけっこう昔に発見していて、もう直ってると思っていたのに、直っていなかったようですorz)
現状では、地道にループさせるしか方法が無いようです。(ループして1レコードだけ返すメソッドを用意しておけばいい話ではありますが^^;)


コメント    この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« static importできないメソッド | トップ | AsakusaFW restructureで一致... »
最新の画像もっと見る

コメントを投稿

PG(分散処理)」カテゴリの最新記事