2013-03-13 68 views
0

我有這種情況:如何在hql中選擇員工?

在一個時間表中我有Appointments,其中包含一個不同的列表Services。每個ServiceEmployee有關,它是提供它的。

的代碼看起來是這樣的:

class Appointment extends BaseEntity{ 
    ... 
    private List<Service> services; 
    private Date start, end; 
    ... 
    // getter/setter 
} 

class Service extends BaseEntity{ 
    ... 
    private Employee employee; 
    ... 
    // getter/setter 
} 

class Employee extends BaseEntity{ 
    ... 
    private String id; 
    ... 
    // getter/setter 
} 

我想編寫一個查詢,它選擇Employee ID的所有Services的,這是提供在Appointments在指定的時間間隔(從DATE1到DATE2 )。

我嘗試了幾件事,但我沒有什麼是正確的。我的主要問題是我不知道如何正確使用Appointment中的List,並將其與Employee id連接起來。我嘗試過,但它不起作用:

「select e.id from Appointment a,Service s left join s.employee e where s in elements(a.services)and s.start < = date1 and s。 end> = date2「;

任何想法?

回答

3

嘗試以下操作:

SELECT e.id 
FROM Appointment a 
INNER JOIN a.services s 
INNER JOIN s.employee e 
where s.start <= ? and s.end >= ? 
+0

我上投這一點,但你可以請格式化你的答案,所以我們不必滾動? – carbontax 2013-03-16 15:11:14

+0

我編輯答案建議 – overmeulen 2013-03-18 08:47:44

+0

謝謝overmeulen。我的手機更好。 – carbontax 2013-03-18 11:58:51