【问题标题】:How to select all elements that have another element in their list如何选择列表中包含另一个元素的所有元素
【发布时间】:2018-04-19 07:02:25
【问题描述】:

我是 hibernate 新手,不能 RTFM,所以我希望有人能帮我节省很多时间。

我的数据库中的对象之间存在多对多关系。假设员工和工作。

我想选择分配给给定员工的所有工作。我的对象 Jobs 有一个正在处理它的所有员工的列表。所以,在java中,它是:Job job.employees.contains(employee)。除了我需要把它变成一个休眠查询之类的东西。

现在我只是在选择所有内容后在 Java 中进行暴力破解。

  getJobsByEmployee(Employee selectedEmployee) {
    Query query = session.createQuery("from Job");
    List<Job> allJobs = query.getResultList();

    List<Job> emplJobs = new ArrayList<>();
    for (Job job : allJobs) {
      for (Employee empl : job.getEmployees()) {
        if (empl.getId() == selectedEmployee.getId()) {
          emplJObs.add(job);
          break;
        }
      }
    }
    return emplJobs;
  }

我该如何编写查询或 HQL,或者为此从我的数据库中获取数据?迄今为止,我只编写了最基本的查询,并且对 hibernate 中所有不同的语法选项感到不知所措。

PS 我正在使用 Spring ORM,因此由于事务性等原因,可能会缺少一些正常的休眠语法。

请不要问我为什么要这样做。我必须。

【问题讨论】:

    标签: hibernate orm hql spring-orm


    【解决方案1】:

    没关系,答案太明显了,我看不到。

    只需返回已在员工对象上的工作。因为它是多对多的,所以它也有一个工作列表。

      return selectedEmployee.getJobs();
    

    呃。必须先调用 size() ,因为员工的 jobs 属性没有被急切地加载......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      • 2016-04-01
      • 1970-01-01
      • 2022-08-19
      • 2012-05-18
      • 2016-12-12
      • 2013-11-15
      相关资源
      最近更新 更多