我是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语法可能因为事务性而丢失等。
请不要问我为什么这样做。我必须。
答案 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属性并没有被急切地加载......