如何选择列表中包含其他元素的所有元素

时间:2017-11-07 01:13:23

标签: hibernate orm hql hibernate-criteria spring-orm

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

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

我想选择分配给给定员工的所有工作。我的对象乔布斯列出了正在开展工作的所有员工。所以,在java中,它是:Job job.employees.contains(employee)。除非我需要将其转换为hibernate查询或其他内容。

现在我只是在选择了所有内容后在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语法可能因为事务性而丢失等。

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

1 个答案:

答案 0 :(得分:0)

没关系,答案是如此明显,我无法看到它。

只需返回员工对象上已有的作业即可。由于它有很多,它也有一份工作清单。

from tkinter import *
import time
import os


def show_entry_fields():
    hr= hrvar.get()
    mn = minvar.get()
    sc = secvar.get()
    counter = int(hr)*3600+int(mn)*60+ int(sc)

    mins = int(counter/60)
    hours = int(mins/60)

    hours = IntVar()
    mins = IntVar()
    secs = IntVar()

    while counter > 0:
       counter -= 1
       hours, sec = divmod(counter, 3600)
       mins, sec = divmod(sec, 60)
       printv = StringVar()




       printv = (" %d Hr:, %d Min: %d Sec" % (hours, mins, sec))
       win1 = Tk()
       timeLabel = Label(win1, textvariable= printv).grid(row=7)
       mins= int(counter/60)
       hours = int(mins/60)
       time.sleep(1)
       os.system('cls')
       return
   else:
       finishedLabel = Label(master, text="Time is Up").grid(row=7)
       return


  master = Tk()
  Label(master, text="Enter Hour(s)").grid(row=0)
  Label(master, text="Enter Mins(s)").grid(row=1)
  Label(master, text="Enter Second(s)").grid(row=2)

  hrvar = IntVar()
  minvar = IntVar()
  secvar = IntVar()
  e1 = Entry(master, textvariable = hrvar)
  e2 = Entry(master, textvariable = minvar)
  e3 = Entry(master, textvariable = secvar)

  e1.grid(row=0, column=1)
  e2.grid(row=1, column=1)
  e3.grid(row=2, column=1)

  Button(master, text='Quit', command=master.quit).grid(row=3, column=0, 
  sticky=W, pady=4)
  Button(master, text='Show', command=show_entry_fields).grid(row=3, 
  column=1, 
  sticky=W, pady=4)

  mainloop( )

咄。不得不首先调用size(),因为员工的jobs属性并没有被急切地加载......