Привет, В моей модели домена,Spring HibernateDaoSupport: проблема с ленивой загрузкой?
«Семья» имеет много « подсемейства в„подсемейства“имеет много» локуса в
и отношения двунаправленные с ленивой загрузкой.
ie. «Локус» может получить доступ к родительскому «SubFamily», используя alocus.getSubFamily();
Внизу ниже фрагмента Я дал метод DAO для извлечения Локуса.
В моей WebApplication (Калитка основе)
Я получаю локус от DAO, а затем попытаться получить подсемейства как:
Locus alocus = dao.getLocusByLocusId(alocusid);
SubFamily asubfamily=alocus.getSubFamily();
Но он бросает ошибку:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:57) at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111) at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:150) at com.bigg.nihonbare.common.domain.SubFamily$$EnhancerByCGLIB$$a0d68bed.getSubFamilyId(
Любой чаевые?
public Locus getLocusByLocusId(final String LocusId) {
return (Locus) this.getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session) {
Criteria criteria = session.createCriteria(Locus.class);
criteria.add(Expression.eq("locusId", LocusId));
List result =criteria.list();
if (result!=null && result.size() > 0) {
return result.get(0);
}
return null;
}
});
}
Я использую SPIN HibernateDAOSupport, я смущен. Везде, где Hibernate Session закрывается и открывается без фильтра OSV? –
Обратный вызов будет использовать «активный» сеанс спящего режима, если он присутствует. Если нет, то сеанс будет создан, использован и закрыт в самом обратном вызове. Если вы хотите использовать возвращенный объект вне обратного вызова для запроса с помощью hibernate, тогда вам нужно будет повторно связать объекты с активным сеансом. Я бы предложил гораздо более чистый и проверенный способ OSV делать все, когда это было возможно. – Elister
Elister: та же проблема, с которой я сталкиваюсь, когда пытаюсь получить доступ к DAO через автономное приложение Java. Что нужно сделать, чтобы избавиться от него? – Murugesh