2

私はDaosにOrmLiteのオブジェクトキャッシュを使用して、各オブジェクトに対してアプリにインスタンスが1つだけ存在するようにしています。

列のサブセットのみを選択するようにクエリを制限すると、問題が見つかりました。たとえば、現在データベースに保存されているすべてのIDが必要な場合です。私はそれを行うために次のコードを使用しました。

Dao<Data, String> dao = getDao(Data.class, String.class);
List<Data> dataList = dao.queryBuilder().selectColumns("id").query();

オブジェクト全体をクエリするよりもはるかに高速であるため、パフォーマンス上の理由からこのソリューションを使用しました。

現在起こっていることは、クエリによって返されるデータオブジェクトもオブジェクトキャッシュに保存されるということです。したがって、データオブジェクトに対して通常のクエリ(selectColumnsなし)を実行すると、他のすべてのエントリがnullの状態でキャッシュからクエリを取得します。

これはバグですか?

4

1 に答える 1

0

selectColumns()本日同じ問題が発生し、オブジェクト キャッシングと組み合わせて使用​​することは安全ではないと結論付けました。

それがバグなのか、概念上の問題なのか、設計上の決定なのかを判断するのは、あなたに任せます。

于 2014-12-18T13:19:23.733 に答える