я следующая структура класса отображается в мою базу данных, обратите внимание на моей диаграмме б это один ко многие ребенка А и т.д.спящего режим и селективная отложенная загрузка
a
-b
--c
-d
--e
---f
---g
теперь, когда я получу свой результирующий набор назад из hibernate, я подключаю его к jibx, чтобы его сортировать и отправлять клиенту. моя проблема в том, что когда jibx пытается получить доступ к ленивым записям загрузки, я получаю исключение, потому что к этому моменту его отключили от сеанса спящего режима.
Теперь, чтобы сделать его еще хуже, есть транзакции, в которых я хочу иметь все записи класса a, b, c, d, но ни один из e, f, g. но следующий запрос может захотеть всех a, d, e, f, g и ни одного из b, или c и следующего запроса всех a, d, g и ни одного остального.
так, мой класс DAO выглядит следующим образом
public class SurveyNameDAO extends HibernateDaoSupport
{
public List<SurveyName> getPermittedSurveys(String userName)
{
StringBuffer sql = new StringBuffer();
sql.append("select distinct sn ");
sql.append("from SurveyName as sn, SurveyNameStore name_store ");
sql.append("where name_store.showStoreLocation.storeName in (select ng.pnName ");
sql.append("from NukeGroups as ng, NukeUsers as nu ");
sql.append("where nu.pnName = '" + userName + "')");
SurveyName loc = null;
List l = getHibernateTemplate().find(sql.toString());
return l;
}
}
Основной вопрос состоит в том, как я могу изменить этот метод (и многие, как это), где я могу добавить какое-то индикаторы говорит, чтобы загрузить возвратный класс в как я говорил выше, а затем полностью отключиться от спящего режима и забыть о ленивой загрузке, когда я отправляю ее в jibx.
Рекомендовать замену переменных в вашем запросе на a, b, c, ...как на диаграмме выше, поэтому мы можем понять, как отношения связаны с запросом. Кроме этого, это немного больше SQL, чем я делаю на регулярной основе, поэтому я не знаю, что я мог бы помочь без каких-либо дополнительных усилий, чем практический =) – stevendesu
его не проблема с запросом HQL, его нужно сделать с указанием спящего режима, как загрузить результат в свои классы. – scphantm