У меня есть следующая структура классов, сопоставленная с моей базой данных, обратите внимание, что на моей диаграмме b один из многих потомков A и т. Д.
a
-b
--c
-d
--e
---f
---g
Теперь, когда я возвращаю свой набор результатов из режима гибернации, я подключаю его к 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.