2

我正在为我的 Daos 使用 OrmLite 中的对象缓存,以确保每个对象在我的应用程序中只有一个实例。

现在,当我将查询限制为仅选择列的子集时,我发现了一个问题。例如,当我想要当前存储在数据库中的所有 ID 时。我使用以下代码来做到这一点。

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

出于性能原因,我使用了这个解决方案,因为它比查询整个对象要快得多。

现在发生的事情是查询返回的那些 Data 对象也存储在 objectcache 中。因此,当我对 Data 对象执行普通查询(不带 selectColumns)时,我会从缓存中获取所有其他条目为空的对象。

这是一个错误吗?

4

1 回答 1

0

selectColumns()我们今天遇到了同样的问题并得出结论,与对象缓存结合使用是不安全的。

我将由您来决定它是错误、概念问题还是设计决定。

于 2014-12-18T13:19:23.733 回答