[英]how do i convert SQL query to HQL
public class EmployeeUserMap {
@ManyToOne
@JoinColumn(name = "EMPLOYEEID", unique = true)
protected Employee employee;
@ManyToOne
@JoinColumn(name="USERID")
private User user;
}
public class RoleUserMap {
@ManyToOne
@JoinColumn(name = "ROLEID")
private Role role;
@ManyToOne
@JoinColumn(name = "USERID")
private User user;
}
以下是我的SQL查询。
select e.id ,e.firstname from employee_user_map o
left join role_user_map ru on ru.userid = o.userid
left join employee e on e.id = o.employeeid
where ru.roleid = (select r.id from role r where r.code='Role_Merchant')
我尝试过的HQL查询。
SELECT new com.erp.core.repository.value.LookupValue(o.id,o.firstName,o.firstName) FROM EmployeeUserMap o
LEFT JOIN o.user =
WHERE /*@{SYSTEM_CRITERIA}*/1=1 AND (UPPER(o.firstName) LIKE UPPER(CONCAT('%',:searchParam,'%')))
假设您的映射正确,则应将hql查询形成为:
Hibernate版本<5.1.0:
select new com.erp.core.repository.value.LookupValue(e.id,e.firstName)
from EmployeeUserMap eu
, RoleUserMap ru
, Employee e
, User u
, Role r
where r.code ='Role_Merchant'
and eu.user = u
and ru.user = u
and ru.role =r
and eu.employee = e
不要以为您真的需要这里的子查询。
更新 :对于HIbernate的5.1.0+版本,可以使用不相关的实体联接,因此在您的情况下:
select new com.erp.core.repository.value.LookupValue(e.id,e.firstName)
from EmployeeUserMap o
left join o.user u
left join o.employee e
left join RoleUserMap ru on ru.user.id = u.id
left join ru.role r
where r.code ='Role_Merchant'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.