私はDaosにOrmLiteのオブジェクトキャッシュを使用して、各オブジェクトに対してアプリにインスタンスが1つだけ存在するようにしています。
列のサブセットのみを選択するようにクエリを制限すると、問題が見つかりました。たとえば、現在データベースに保存されているすべてのIDが必要な場合です。私はそれを行うために次のコードを使用しました。
Dao<Data, String> dao = getDao(Data.class, String.class);
List<Data> dataList = dao.queryBuilder().selectColumns("id").query();
オブジェクト全体をクエリするよりもはるかに高速であるため、パフォーマンス上の理由からこのソリューションを使用しました。
現在起こっていることは、クエリによって返されるデータオブジェクトもオブジェクトキャッシュに保存されるということです。したがって、データオブジェクトに対して通常のクエリ(selectColumnsなし)を実行すると、他のすべてのエントリがnullの状態でキャッシュからクエリを取得します。
これはバグですか?