在查询生成器中使用选择列时的Ormlite对象缓存行为

时间:2012-12-21 13:22:13

标签: android ormlite query-builder

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

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

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

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

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

这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

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

我将由您决定是否是错误,概念问题或设计决定。