Ленивые коллекции были хорошо протестированы и используются многими другими, поэтому, хотя с ними могут быть ошибки, более вероятно, что вас обманывает класс ленивых коллекций.
Когда каждый из UserShow
объектов извлекается из DAO, episodes
не будет нулевым, а вместо этого будет установлен с экземпляром LazyForeignCollection
. Однако дополнительные запросы не будут выполняться, и в коллекции не будет данных Episode
. Если вы затем вызовете один из методов в коллекции, например userShow.getEpisodes().iterator()
, тогда будет выполнен отдельный запрос, чтобы вы могли выполнить итерации эпизодов этого шоу. Вот как работают ленивые коллекции.
Если вы все еще думаете, что ленивые коллекции не работают, пожалуйста, покажите нам, как вы определяете, что шоу имеют данные эпизодов. Чтобы узнать, какие запросы выполняются и где, вы можете включить вход в Android с помощью ORMLite .
Edit:
Оказывается, @Georgy использовал отладчик для исследования коллекции. Отладчик, скорее всего, вызывает те же самые методы iterator()
или toArray()
, которые вызывают запросы сбора в этот момент. Таким образом, в коллекции не было никаких эпизодов, пока их не попросил отладчик.