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就行
你在小类中指定的字段名是什么那么“点号”后面就跟什么