【问题标题】:Criteria Query for Unidirectional one to many association, searching with list of entities单向一对多关联的条件查询,使用实体列表进行搜索
【发布时间】:2020-09-29 11:51:04
【问题描述】:

我的实体包含包含个人实体的集合 (OneToMany)。一个人不知道它属于哪个集合。 我想搜索包含特定 Persons 的 MyPersons 实体。 问题是当我有一个需要映射到 MyPerson 实体的人员列表时,我不知道如何使用条件进行搜索。 请原谅我的英语不好。 我希望有人可以提供帮助。

【问题讨论】:

  • 多一点上下文会很有用。您的实体之间有什么关系,尤其是 MyPersons 与 Collections 之间的关系?你说的是数据库查询还是对象过滤?
  • 我需要从数据库中检索所有 MyPersons 实体,其中 MyPersons 实体包含来自 ArrayList 的 MyPerson 实体。如果可能的话,我需要使用 Criteria API 来完成。
  • 我在我的问题中犯了一个小错误。一个 MyPersons 实体只拥有一组 MyPerson 实体。

标签: java hibernate criteria criteria-api


【解决方案1】:

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

【讨论】:

  • 关于答案的一点上下文或解释将有助于用户提问
【解决方案2】:

我找到了解决办法:

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

【讨论】:

    猜你喜欢
    • 2015-07-23
    • 1970-01-01
    • 2019-12-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 2012-02-19
    • 1970-01-01
    相关资源
    最近更新 更多