ERROR: Path expected for join! Path expected for join! 关于左连接的一个错误

ERROR:  Path expected for join!  Path expected for join! 关于左连接的一个错误

今天在运行一个左连接(LEFT JOIN)程序时出现如下错误

ERROR:  Path expected for join!

 Path expected for join!


ERROR:  Path expected for join!
 Path expected for join!

ERROR:  right-hand operand of a binary operator was null
right-hand operand of a binary operator was null

出现的错误和这个错误即为类似


Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 1; nested exception is org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 1


这个错误大概意思就是说我们的hql代码似乎写错了

如我这里的hql代码如下

String hql = "from article ar left join articlefl arfl where ar.arfenlei=arfl.arflid and ar.arid=?";
以上代码想表达的意思是左连接

两个表 article  articlefl ,注意这里的表名是实体中定义的注解@Entity(name="article")

他们的别名分别是 ar 和 arfl

但是这里这样写,如果不在实体中做相应处理,就会出现上面的错误。

那么我们应该如下处理以满足我们的左连接查询方式

第一步,需要在实体中设定外键,如下代码

private Articlefl arfl;
//延迟加载
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="arflid")
public Articlefl getArfl() {
	return arfl;
}
public void setArfl(Articlefl arfl) {
	this.arfl = arfl;
}
第二部,hql应该修改为如下代码

String hql = "from article ar left join ar.arfl arfl where ar.arfenlei=arfl.arflid and ar.arid=?";
上面的代码中 ar.arfl 就相当于获得了一个articlefl,where后面就是左连接的条件


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img