我有实体医生
@Entity
public class Doctor extends Account {
//other attributes
@Column
@ElementCollection(targetClass = Speciality.class, fetch = FetchType.EAGER)
private Set<Speciality> speciality = new HashSet<Speciality>(0);
//getters and setters
}
和实体专业
@Entity
public class Speciality {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
String name;
//getters and setters here
}
现在在我的应用程序中,用户可以选择想要访问的医生的专业。例如用户选择 内分泌学家,现在我的应用程序需要找到所有在Set专业有专业内分泌专家的医生。 怎么做?
答案 0 :(得分:1)
您可以使用 Hibernate Criteria Queries Builder API :
轻松完成final List<Doctor> doctors = getSession()
.createCriteria(Doctor.class, "doc")
.add(Restrictions.eq("doc.speciality.id", specialityId))
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.list();
答案 1 :(得分:0)
使用元素:
SELECT d
FROM Doctor d
WHERE
:spec IN elements(d.speciality)
答案 2 :(得分:-1)
您可以使用MEMBER OF JPQL语句执行此操作。
例如:
Select d From Doctor d where :speciality MEMBER OF d.speciality