Я хочу использовать критерии с некоторыми условиями поля "один ко многим".
Кратко представив мою модель, у одного item
есть несколько options
.
Поскольку я хочу получить item
с отфильтрованным options
и передать его анализатору JSON (без сеанса), мне нужно получить параметры при запросе.
Я закодировал, как показано ниже, прежде чем добавлять ограничения к параметрам, у меня это работает нормально.
Item item = (Item)session.createCriteria(Item.class)
.setFetchMode("options", FetchMode.JOIN)
.add(Restrictions.eq("id", id))
.uniqueResult();
Но когда я добавил ограничения в options
, возникает ошибка (именно, когда вызываемая функция пытается получить доступ к элементу, поиск работает нормально).
Item item = (Item)session.createCriteria(Item.class)
.setFetchMode("options", FetchMode.JOIN)
.add(Restrictions.eq("id", id))
.createCriteria("options").add(Restrictions.eq("status", ItemStatus.ABLE))
.uniqueResult();
Ошибка:
failed to lazily initialize a collection of role: options, could not initialize proxy - no Session
Я добавил setFetchMode в конец дополнительных критериев, результат был таким же.
Что случилось!? Не могли бы вы сказать решение?
.setFetchMode("options", FetchMode.JOIN)
, тогда я также получаю правильный результат. - person Amogh   schedule 18.06.2014options
после закрытия сеанса. - person crazy_rudy   schedule 18.06.2014options
после закрытия сеанса. - person crazy_rudy   schedule 18.06.2014options
, произошла ошибка. хотя я установил режим выборки как присоединение к параметрам. - person crazy_rudy   schedule 18.06.2014@Fetch(FetchMode.JOIN)
в поле параметров. но меня больше интересует, почему setFetchMode не работает с подкритериями... это не имеет смысла.... - person crazy_rudy   schedule 18.06.2014