2015-06-01 2 views
2

Привет Я решаю проблему генеалогического древа.Предложение HQL WHERE, где условие находится внутри хэшета или списка

У меня есть класс POJO семья

Public class Family { 

private int familyId; 
private Partners parents; 
private HashSet<Person> children; 
private HashSet<Family> descendantFamilies; 
//getters and setters. 
} 

public class Person { 
    private int personId; 
    private String name; 
    private Gender gender; //Enum class 

//getters and setters. 
} 

public class Partners { 

private person husband; 
private person wife; 
//getters and setters 
} 

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

ответ

1

Привет Я постараюсь ответить на ваш вопрос, потому что я думаю, что вы ищете ключевое слово elements.
Вы можете чек в семьях, где этот человек один среди детей этой семьи пути использования ниже HQL: -

select f 
FROM Family f 
WHERE (
    :person in elements(f.children) 
) 

этот запрос будет давать семью, содержащей человеку, как дети. Синтаксис может быть что-то вроде: -

String hql = "select f FROM Family f WHERE (:person in elements(f.children))"; 
Query query = session.createQuery(hql); 
query.setEntity("person",somePersonObject); 

Кроме того, я думаю, вы могли бы уже знать, но все же хочу сказать, когда вы используете HashSet наиважнейшая равно и метод хэш-код имеет важное значение. Как определить два объекта человека следует считать равными (возможно, когда они одинаковы)

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