2016-03-26 3 views
0

Я новичок в Hibernate, может кто-нибудь исправить HQL для ниже SQL, чтобы узнать о уникальных сотрудниках, которые сейчас работают с клиентом. если возможно, предоставьте мне несколько ссылок для учебника.Как написать HQL для левого внешнего соединения с критериями?

при разборе SQL я смог получить некоторые записи из базы данных & также с помощью собственного SQL, но когда я использую ниже HQL, я не смог получить никаких записей.

SQL:

select distinct u.employeeid from employee u 
    inner join address ad on u.employeeid = ad.employeeid 
    left join company cp on (ad.oldcompanyid = cp.currentcompanyid and cp.wokingornot='Y') 
    left join client cl on (ad.oldcompanyid = cl.currentcompanyid and cl.wokingornot='Y') 
    where (u.lastdate is null and ad.lastdate is null) 
      and (cp.wokingornot = 'Y' or cl.wokingornot = 'Y'); 

пожалуйста исправить HQL перечислены ниже:

select distinct u from employee u ,address uo,company tp ,client mp 
inner join u.address uo 
left join uo.company tp with tp.wokingornot= true 
left join uo.client mp with mp.wokingornot= true 
where (u.lastdate is null and uo.lastdate is null) 
and (tp.wokingornot= true or mp.wokingornot= true); 

Ниже перечислены объекты, которые я ищу для HQL:

public class employee { 
public Int employeeid ; 
public set<address> address; 
public Date lastdate; 
public Date Startdate; 
} 

public class address{ 
public int addressid; 
public int oldcompanyid; 
public employee employee; 
public Date lastdate; 
public Date Startdate; 
} 

public class company{ 
public int currentcompanyid; 
public string wokingornot; 
public address address; 
} 

public class client{ 
public int currentcompanyid; 
public string wokingornot; 
public address address; 
} 
+0

Запросы HQL оформлены в зависимости от того, как отображаются объекты. Проводятся соответствующие организации. –

ответ

0

Это будет выглядеть больше похоже на это. Вы получите весь графический объект из класса Employee через адрес до класса «Компания» и «Клиент».

select distinct u from employee u 
join u.address uo 
left join uo.company tp 
left join uo.client mp 
where u.lastdate is null and uo.lastdate is null 
and (tp.wokingornot= true or mp.wokingornot= true) 
Смежные вопросы