【问题标题】:JPQL join condition in linked Entity class链接实体类中的 JPQL 连接条件
【发布时间】:2015-08-02 22:30:00
【问题描述】:

我正在使用下面的 SQL 加入员工、user_projects 和 project_master

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'

在 Employee 实体中,我将以下 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 以创建 where 条件 mast.active = 'Y' in Employee entity's findProjects namedQuery 如何在Employee Entity类中加入UserProjects和ProjectMaster?

实体

实体员工

@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;

实体用户项目

@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;

实体项目大师

@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;

【问题讨论】:

    标签: java jpa jpql


    【解决方案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'
    

    这不行吗?

    【讨论】:

    • Stan,感谢您的回答,不知道这很简单。赞赏。
    猜你喜欢
    • 2015-07-18
    • 2013-12-21
    • 1970-01-01
    • 2013-04-09
    • 2021-11-13
    • 1970-01-01
    • 2015-06-04
    • 2012-10-25
    • 2016-05-19
    相关资源
    最近更新 更多