Поведение Ormlite objectcache при использовании столбцов select в построителе запросов

Я использую кеш объектов в OrmLite для своих Daos, чтобы гарантировать, что для каждого объекта в моем приложении есть только один экземпляр.

Теперь я обнаружил проблему, когда я ограничиваю запрос, чтобы выбрать только подмножество столбцов. Например. когда мне нужны все идентификаторы, которые в настоящее время хранятся в базе данных. Для этого я использовал следующий код.

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

Я использовал это решение из соображений производительности, потому что оно намного быстрее, чем запрос всего объекта.

Теперь происходит то, что эти объекты данных, возвращаемые запросом, также сохраняются в кэше объектов. Поэтому, когда я делаю обычный запрос (без selectColumns) для объекта Data после него, я получаю тот, который находится в кеше, со всеми остальными записями null.

Это ошибка?


person d1rk    schedule 21.12.2012    source источник


Ответы (1)


Сегодня мы столкнулись с той же проблемой и пришли к выводу, что использовать selectColumns() в сочетании с кэшированием объектов небезопасно.

Я оставлю вам решать, является ли это ошибкой, концептуальной проблемой или дизайнерским решением.

person superquadratic    schedule 18.12.2014