2014-02-18 4 views
0

У меня есть 2 объекта:Получение массива псевдонимами элементов по индексу

User { 
int id, 
String name, 
List<Status> statusList 
} 

Status { 
int id, 
int userId, 
String name, 
Date createDate 
} 

Я сопоставляются, что классы POJO в двух .hbm файлов, при этом в Status.hbm файле я сказал гибернации, что я хочу получить статусы из базы в DESC, упорядоченные по дате зрения:

<set name="statuses" order-by="date desc"> 
    <key> 
     <column name="userId" /> 
    </key> 
    <one-to-many class="Status" /> 
</set> 

Теперь я хочу, чтобы выбрать список пользователей, которым выбрал (фе «Создан», или «Удалено») первый элемент в statusList собственности.

Я пишу:

sessionFactory.getCurrentSession().createCriteria(User.class) 
    .createAlias("statuses", "statusesAlias") 
    .add(Restrictions.eq("statusesAlias[0].name", "Created")).list(); 

Но я получаю сообщение об ошибке в

.add(Restrictions.eq("statusesAlias[0].name", "Created")) 

Итак, вот вопрос - как я могу получить доступ к первому элементу свойства объекта, когда это свойство является псевдонимом как

.createAlias("statuses", "statusesAlias") 
+1

Какая ошибка? –

+0

java.lang.reflect.InvocationTargetException –

+1

Тогда вам понадобится сопоставить этот метод с Hibernate, тоже ... –

ответ

0

Вы можете написать этот стиль запроса с использованием HQL:

from User where statuses[0].name = 'Created' 

Я не верю, что существует эквивалентная форма, использующая API критериев.

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