我正在为我的 Daos 使用 OrmLite 中的对象缓存,以确保每个对象在我的应用程序中只有一个实例。
现在,当我将查询限制为仅选择列的子集时,我发现了一个问题。例如,当我想要当前存储在数据库中的所有 ID 时。我使用以下代码来做到这一点。
Dao<Data, String> dao = getDao(Data.class, String.class);
List<Data> dataList = dao.queryBuilder().selectColumns("id").query();
出于性能原因,我使用了这个解决方案,因为它比查询整个对象要快得多。
现在发生的事情是查询返回的那些 Data 对象也存储在 objectcache 中。因此,当我对 Data 对象执行普通查询(不带 selectColumns)时,我会从缓存中获取所有其他条目为空的对象。
这是一个错误吗?