用于单向一对多关联的条件查询,搜索实体列表

问题描述

我有一些实体,这些实体包含用于保存人实体的集合(OnetoMany)。一个人不知道它属于哪个集合。 我想搜索包含特定“人”的MyPersons实体。 问题是,当我有需要映射到MyPerson实体的人员列表时,我不知道如何使用条件进行搜索。 对不起,我的英语不好。 我希望有人能提供帮助。

解决方法

data=Collection.stream().filter(f->f.getName().equals("name")).forEach(i->{
    System.out.println();
});

,

我找到了解决方法:

final CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<MyPersons> query = builder.createQuery(MyPersons.class);
Root<MyPersons> root = query.from(MyPersons.class);
Join<MyPersons,MyNaturalPerson> join = root.join("persons");
ParameterExpression<Collection> persons = builder.parameter(Collection.class);
//Persons = filled with MyPerson Entities
query.where(join.in(persons));
TypedQuery<MyPersons> tq = session.createQuery(query);
List<?> resultList = tq.setParameter(persons,result).getResultList();
List<MyNaturalPerson> finalresult = (List<MyNaturalPerson>) resultList;

Thx to a very similar Question/problem