我正在尝试使用对嵌入式实体变量有限制的Criteria API执行获取。但是我收到以下错误,
org.hibernate.QueryException: could not resolve property: cpm of: org.sorabh.SystemEnt
下面是我的SystemEnt实体,
@Entity
@Table(name="system")
public class SystemEnt implements Serializable{
@Id
@Column(name="pmTpId", nullable = false)
private int id;
@Column(name="pmMeasureId", nullable = false)
private int pmMeasureId;
@OneToOne(fetch=FetchType.EAGER)
@JoinColumn(name="pmMeasureId", insertable=false, updatable=false)
private Cpm cpm;
private String mapper;
public int getId() {
return id;
}
public int getPmMeasureId() {
return pmMeasureId;
}
public Cpm getCpm() {
return cpm;
}
public String getMapper() {
return mapper;
}
public void setId(int id) {
this.id=id;
}
public void setPmMeasureId(int pmMeasureId) {
this.pmMeasureId=pmMeasureId;
}
public void setCpm(Cpm cpm) {
this.cpm=cpm;
}
public void setMapper(int mapper) {
this.mapper=mapper;
}
我的CpmMeas包含
@Entity
@Table(name="cpm")
public class Cpm implements Serializable{
@Id
@Column(name="pmMeasureId", nullable = false)
private int pmMeasureId;
@Column(nullable=false)
private int pmGranularity
//getters and setters
public void setPmMeasureId(int pmMeasureId) {
this.pmMeasureId=pmMeasureId;
}
public int getPmMeasureId() {
return pmMeasureId;
}
public void setPmGranularity(int pmGranularity) {
this.pmGranularity=pmGranularity;
}
public int getPmGranularity() {
return pmGranularity;
}
我在serviceImpl中执行以下操作:
Criteria cr = session.createCriteria(SystemEnt.class);
cr.add(Restrictions.like("mapper", "Test", MatchMode.START));
cr.add(Restrictions.eq("cpm.pmGranularity", 1));
我已经尝试过使用SO上其他几篇文章中建议的别名,但这似乎无法解决问题。 而且,它在解析映射器时没有问题,即仅嵌套实体和相应变量没有得到解析。