2017-01-24 5 views
0

У меня есть член таблицы, который как ленивый пользователь нагрузки.Как фильтровать на основе свойств ленивых объектов нагрузки

Member User 
------ ---- 
id  id 
User  name 

DetachedCriteria dc = DetachedCriteria.forClass(Member.class, "m"); 
dc.setFetchMode("user",FetchMode.JOIN); 
dc.add(Restrictions.like("user.name", "alpha", MatchMode.ANYWHERE)); 
Criteria criteria = dc.getExecutableCriteria(session.getSession()); 
List<Membership> list = criteria.list(); 

Он выбрасывает исключение спящего режима, не может разрешить свойство user.name в таблице участников.

Как использовать ограничения свойств из объекта, связанного с ленивой нагрузкой?

ответ

1

Вам необходимо создать псевдоним, чтобы получить доступ к свойствам пользователя. Для этого необходимо изменить следующее:

DetachedCriteria dc = DetachedCriteria.forClass(Member.class, "m"); 
dc.createAlias("user", "u"); 
dc.add(Restrictions.like("u.name", "alpha", MatchMode.ANYWHERE)); 
Criteria criteria = dc.getExecutableCriteria(session.getSession()); 
List<Membership> list = criteria.list();