Java 如何在HQL中连接多个表

Java 如何在HQL中连接多个表,java,sql,spring,hibernate,hql,Java,Sql,Spring,Hibernate,Hql,我有以下实体类: public class Work implements java.io.Serializable { private Integer workId; private User userByCreateBy; private User userByUpdateBy; private Long studyId; private String name; private byte panelType; private byte status; private Date creat

我有以下实体类:

public class Work implements java.io.Serializable {

private Integer workId;
private User userByCreateBy;
private User userByUpdateBy;
private Long studyId;
private String name;
private byte panelType;
private byte status;
private Date createDate;
private Date updateDate;
private Set<Task> tasks = new HashSet<Task>(0);

public Work() {
}
但这是错误的

HTTP状态500-请求处理失败;嵌套异常为java.lang.IllegalArgumentException:org.hibernate.QueryException:无法解析属性:的用户


在工作实体“我看不到用户”字段中,我是否做错了什么问题 你有

private User userByCreateBy;
private User userByUpdateBy;

private User userByCompleteBy;
private User userByExecutedBy;
问题就在这方面

left join w.user u where u.user_Id = w.create_by

您需要让工作中的用户列表与任务一样左键联接

工作实体上没有名为User的字段。因此,您应该将w.user替换为w.userByCreateBy或w.userByUpdateBy或重命名实体字段。

如何使用用户列表更正它。此私人用户userByCreateBy足以加入右侧?如果您想要左加入,则需要与任务相同的列表,否则请使用直接加入我尝试从工作中选择计数*w左加入w任务t加入w用户u其中w状态!=:状态,但它导致错误HTTP状态500-请求处理失败;嵌套异常为java.lang.IllegalArgumentException:org.hibernate.QueryException:无法解析属性:userIt应为select count*from Work w left join w.tasks t join w.userByCreateBy u其中w.status!=:状态您只能使用未定义“实体用户”字段中定义的变量
 StringBuilder dataQuery = new StringBuilder("select new com.web.main.view.WorkView("
        + "w.workId, "
        + "w.studyId, "
        + "w.name, "
        + "w.panelType, "
        + "t.type, "
        + "t.status, "
        + "u.user_name,"
        + "w.createDate, "
        + "w.updateDate, "
        + "t.startDate, "           
        + "t.endDate ) "
        + "from Work w  left join w.tasks t  left join w.user u where u.user_Id = w.create_by and w.status!=:status");    
private User userByCreateBy;
private User userByUpdateBy;

private User userByCompleteBy;
private User userByExecutedBy;
left join w.user u where u.user_Id = w.create_by