2015-05-21 2 views
1

Я использую следующий SQL, чтобы присоединиться к сотрудникам, user_projects и project_masterJPQL условие соединения в связанном Entity класса

SELECT DISTINCT usr.user_number, 
        emp.emp_name 
    FROM employees emp 
     LEFT JOIN user_projects usr 
      ON (emp.user_number = usr.user_number) 
     JOIN project_master mast 
      ON (usr.project_id = mast.project_id) 
    WHERE  mast.active = 'Y' 
     AND emp.user_number = 'SMITH' 

в предприятии Сотрудника, я следующий JPQL определяется как namedQuery

@NamedQuery(name = "Employee.findProjects", query = " select DISTINCT u.userNumber,e.empName" + 
" from Employee e LEFT JOIN e.userProjectsList u where e.userNumber='SMITH' ") 

Не знаете, как связать UserProjects и ProjectMaster, чтобы создать условие где mast.active = 'Y' in Employee entity's findProjects namedQuery Как присоединиться к объектам UserProjects и ProjectMaster в классе Employee Entity?

Сущности

Сущность Сотрудник

@Table(name = "EMPLOYEES") 
public class Employee implements Serializable { 

@Id 
@Column(name = "USER_NUMBER", nullable = false) 
private String userNumber; 

@Column(name = "EMP_NAME") 
private String empName; 

@OneToMany(mappedBy = "employee") 
private List<UserProjects> userProjectsList; 

Entity UserProjects

@Table(name = "USER_PROJECTS") 
public class UserProjects implements Serializable { 

@Id 
@Column(name="PROJECT_ID", nullable = false, insertable = false, 
    updatable = false) 
private String projectId; 

@Id 
@Column(name="USER_NUMBER", nullable = false, insertable = false, updatable = false) 
private String userNumber; 

@ManyToOne 
@JoinColumn(name = "PROJECT_ID", referencedColumnName = "PROJECT_ID") 
private ProjectMaster projectMaster; 

Сущность ProjectMaster

@Table(name = "PROJECTMASTER") 
public class ProjectMaster implements Serializable { 

@Id 
@Column(name="PROJECT_ID", nullable = false) 
private String projectId; 

@Column(name="PROJECT_DESCRIPTION") 
private String projectDesc; 

@Column(name="ACTIVE") 
private String active; 

ответ

1
select DISTINCT u.userNumber,e.empName from Employee e LEFT JOIN 
    e.userProjectsList u JOIN u.projectMaster pm 
    where e.userNumber='SMITH' AND pm.active='Y' 

Разве это не работа?

+0

Стэн, спасибо за ответ, не знал, что это было довольно просто. Оценил. – user75ponic

Смежные вопросы