2015-10-26 1 views
0

Рассмотрим сущностьКак использовать OpenSessionInViewInterceptor?

public class User { 
... 
@OneToMany(cascade = CascadeType.ALL) 
List<SocialCredential> credentialsList = new ArrayList<SocialCredential> (); 
} 

методом реализации DAO

@Transactional 
@Override 
    public User getUser(long id){ 
    Session s = sessionFactory.getCurrentSession(); 
    User u = (User) s.get(User.class, id); 
    return u; 
} 

и контроллер

@Controller 
     public class DummyController { 
     @Autowired 
     UserDAO userDAO; 

     public void anyMethodAccessedByGetORPost(){ 
     User u= userDAO.getUser(1L); 
     } 
     } 

Простой запрос для объекта пользователя автоматически выстреливает запрос для инициализации списка сущностей из SocialCredential? В конечном итоге это приводит к LazyInitializationException.I узнал о OpenSessionInViewInterceptor, который может решить проблему. Как я могу применить то же самое. Я уже следую http://www.jroller.com/kbaum/entry/orm_lazy_initialization_with_dao, но пока не добился успеха.

ответ

0

Простой запрос для объекта Пользователь автоматически запускает запрос для инициализации списка сущностей SocialCredential?

Это зависит от типа выборки по умолчанию API по умолчанию. Refer this question

В конечном итоге это приводит к LazyInitializationException - Это, вероятно, вы пытаетесь доступа credentialsList коллекцию после сессии была закрыта.

Заменить метод DAO getUser(Long id) с помощью нижеприведенного кода может решить LazyInitializationException.

@Transactional 
@Override 
public User getUser(long id){ 
    Session s = sessionFactory.getCurrentSession(); 
    User u = (User) s.get(User.class, id); 
    if (u != null) { 
     u.getCredentialsList(); //it loads the SocialCredentials before session closes. 
    } 
    return u; 
} 
+0

Спасибо за это, но это не ответ на мой вопрос .Its хак для eargerly загрузки обособленных объектов, которые могут быть легко сделать с помощью FetchType.EAGER.As моего вопроса состояния Я заинтересован в реализации OpenSessionInViewInterceptor. –

Смежные вопросы