我在该实体中有一个个人实体,我有一组嵌套的个人名称实体。一个人可以有多个名字,这是人与人之间的一种关系。
@XmlElementWrapper(name = "names")
@XmlElement(name = "name")
@OneToMany(mappedBy = "person", orphanRemoval = false, fetch = FetchType.EAGER)
private Set name;
您可以看到上面如何定义人名集。
我需要创建一个JPA条件查询,用于查找所有在名字、中间名或姓氏上具有匹配的人名对象的个人实体。
public List getPerson(String lastName, String middleName, String firstName) {
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery criteria = builder.createQuery(Person.class);
Root root = criteria.from(Person.class);
criteria.select(root);
if(!lastName.isEmpty() && lastName != null) {
Predicate lastNameCondition = builder.equal( root.get(Person_.personId).get(PersonNames_.lastName), lastName);
criteria.where(lastNameCondition);
}