2012-06-26 1 views
3

Доброго день,Hibernate Критерии списка

У меня есть отображение гибернации, который выглядит примерно так:

public class Item implements Serializable { 
     private lond id; 
     private String Name; 
     private boolean status; 
     ... 

} 

public class ItemHolder implements Serializable { 
     private long id; 
     private List<Item> items; 
     ... 
} 

Как я могу сделать запрос на получение ведьмы всей детали Держателя содержит мою позицию? (с критериями)

ответ

7

Вам просто нужно присоединиться:

Criteria c = session.createCriteria(ItemHolder.class, "itemHolder"); 
c.createAlias("itemHolder.items", "item"); 
c.add(Restrictions.eq("item.id", theItemId); 
+0

Это нормально, но может отвечать на дубликаты ItemHolders, если критерии элементов совпадают более одного раза. Например - при поиске элементов по подстановочному имени. –

1

Запрос может быть что-то вроде:

Item loadedItem = ...; 
Query query = session.createQuery("from ItemHolder ih where :item in elements(ih.items)"); 
query.setParameter("item", loadedItem); 
List list = query.list(); 
2
Criteria criteria=session.createCriteria(ItemHolder.class); 
criteria.createAlias("items", "item"); 
criteria.add(Restrictions.eq("item.Name", "my Item").ignoreCase()); 

можно ограничить с требованием: идентификатор или имя. .