HQL WHERE 子句,其中条件在哈希集或列表中
HQL WHERE clause where the condition is inside a hashset or list
嗨,我正在解决家谱问题。
我有一个 POJO class 家庭
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
}
现在要检查一个人是否有兄弟姐妹,我必须通过家庭检查该人是否是该家庭 children 中的一员 。我是新来的冬眠者。我从来没有通过列表或哈希集搜索过 where 条件。请帮忙。
您好,我会尽力回答您的问题,因为我认为您正在寻找 elements 关键字。
您可以使用以下 HQL 检查该人是该家庭 children 中的一员的家庭:-
select f
FROM Family f
WHERE (
:person in elements(f.children)
)
此查询将给出包含此人的家庭 children。语法可能类似于:-
String hql = "select f FROM Family f WHERE (:person in elements(f.children))";
Query query = session.createQuery(hql);
query.setEntity("person",somePersonObject);
此外,我认为您可能已经知道但仍想告诉您何时使用 HashSet 覆盖 equals 和 hashcode 方法很重要。喜欢定义两个人objects应该被认为是平等的。(可能当ids相同时)
嗨,我正在解决家谱问题。
我有一个 POJO class 家庭
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
}
现在要检查一个人是否有兄弟姐妹,我必须通过家庭检查该人是否是该家庭 children 中的一员 。我是新来的冬眠者。我从来没有通过列表或哈希集搜索过 where 条件。请帮忙。
您好,我会尽力回答您的问题,因为我认为您正在寻找 elements 关键字。
您可以使用以下 HQL 检查该人是该家庭 children 中的一员的家庭:-
select f
FROM Family f
WHERE (
:person in elements(f.children)
)
此查询将给出包含此人的家庭 children。语法可能类似于:-
String hql = "select f FROM Family f WHERE (:person in elements(f.children))";
Query query = session.createQuery(hql);
query.setEntity("person",somePersonObject);
此外,我认为您可能已经知道但仍想告诉您何时使用 HashSet 覆盖 equals 和 hashcode 方法很重要。喜欢定义两个人objects应该被认为是平等的。(可能当ids相同时)