2013-03-13 23 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