2014-12-31 1 views
0

Вот пример структуры, что я имею дело сПопытка создать запрос спящего режима не уверен, если понимание правильно

class Item{ 
    Date date; 
    MetaData metaData; 
} 

class MetaData{ 
    SysData sysData; 
} 

class SysData{ 
    Set<Category> categories; 
    Set<Keyword> keywords; 
} 

На пользовательском интерфейсе пользователь должен иметь возможность просматривать все элементы в таблице. Они должны иметь возможность фильтровать элементы с определенной датой, а также любое количество ключевых слов или категорий.

Допустим, я создал Предмет с категорией «Новый» «Мужской» и ключевое слово «Быстрый» «Довольно». Если я хочу отображать все элементы с новой категорией, я просто выбираю новый тег в раскрывающемся списке и нажимаю «Запрос». Как мне создать такой запрос?

Вот что я пытался

....

Criteria criteria = sess.createCriteria(Item.class, "item"); 
criteria.createAlias("metaData", "meta"); 
criteria.createAlias("meta.sysData", "sys"); 
criteria.add(Restrictions.in("sys.categories", myCategories); 

Я пробовал некоторые незначительные изменения, но я двигаюсь в правильном направлении, по крайней мере? Надеюсь, этого достаточно. Неважно, имеет ли SysData отношение к элементу?

+0

Если критерии API библиотеки Hibernate ничего подобного TOPLINK в (РИ в комплекте с Glassfish), вы будете иметь более легкое время, используя язык запросов, HQL. Посмотрите на http://www.tutorialspoint.com/hibernate/hibernate_query_language.htm и найдите в Интернете дополнительные примеры. – DavidS

ответ

0

Попробуйте так:

Criteria criteria = sess.createCriteria(Item.class, "item"); 
criteria.createAlias("metaData", "meta"); 
criteria.createAlias("meta.sysData", "sys"); 
criteria.createAlias("sys.categories", "ctg"); 
criteria.add(Restrictions.in("ctg", myCategories); 
Смежные вопросы