1. 程式人生 > >HQL語句 Path expected for join!錯誤

HQL語句 Path expected for join!錯誤

HQL語句

select  b from SmallNewsClass s left join s. belongBigNewsClass b

起先我以為s. belongBigNewsClass  中的belongBigNewsClass 對應的是資料庫中的屬性名或者是表名

結果出了如下錯誤

其實s. belongBigNewsClass  對應的是實體s的屬性名

對於使用的兩個實體類程式碼如下:

BigNewsClass.java:

@Entity
public class BigNewsClass {
	@Id
	@Column(columnDefinition="varchar(32) COMMENT 'uuid主鍵'")
	private String uuid;
	@Column(columnDefinition="int COMMENT 'ID'",unique=true)
	private int id;	
	@Column(columnDefinition="varchar(50) COMMENT '大類名稱'",unique=true)
	private String bigNewsClassName;// 大類名稱
	<strong><span style="color:#ff0000;">@OneToMany(targetEntity=SmallNewsClass.class,mappedBy="bigNewsClass")
	private Set<SmallNewsClass> smallNewsClass;</span></strong>
//	get and set
SmallNewsClass.java:
	@Id
	@Column(columnDefinition="varchar(32) COMMENT 'SmallNewsClass uuid主鍵'")
	private String uuid;
	private int id;
	<span style="color:#ff0000;"><strong>@ManyToOne(targetEntity=BigNewsClass.class)
	@JoinColumn(name="belongBigNewsClass",referencedColumnName="uuid",nullable=false)
	private BigNewsClass bigNewsClass;// 所屬大類</strong></span>
	@Column(columnDefinition="varchar(50) COMMENT '小類名稱'")
	private String smallNewsClassName;// 小類名稱
	@OneToMany(targetEntity=NewsInfo.class,mappedBy="smallNewsClass")
	private Set<NewsInfo> newsInfo;
	//get and set

可以看到在SmallNewsClass類中有一個欄位bigNewsClass指定小類所屬的大類。而資料庫中則將它指定為對應大類主鍵uuid的資料項。

所以應該將s. belongBigNewsClass改為s. bigNewsClass就行

你在小類中指定的欄位名是什麼那麼“點號”後面就跟什麼