我使用休眠条件,我想在我的代码中比较变量。但我仍然有这个问题:
org.hibernate.QueryException: could not resolve property: isBike of: models.PolozkyEntity
在我的代码的其他部分,它运行良好,但在那里,我不知道为什么,它不起作用。
PolozkyEntity.class :
@Entity
@Table(name = "polozky", schema = "", catalog = "dbs_projekt")
public class PolozkyEntity {
private int id;
private int idProduct;
private boolean isBike;
private boolean isAccessories;
private ObjednavkaEntity id_odbjednavkyByIdO;
@Id @GeneratedValue
@Column(name = "id")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Basic
@Column(name = "id_product")
public int getIdProduct() {
return idProduct;
}
public void setIdProduct(int idProduct) {
this.idProduct = idProduct;
}
@Basic
@Column(name = "is_bike")
public boolean isBike() {
return isBike;
}
public void setBike(boolean isBike) {
this.isBike = isBike;
}
@Basic
@Column(name = "is_accessories")
public boolean isAccessories() {
return isAccessories;
}
public void setAccessories(boolean isAccessories) {
this.isAccessories = isAccessories;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PolozkyEntity that = (PolozkyEntity) o;
if (id != that.id) return false;
if (idProduct != that.idProduct) return false;
if (isBike != that.isBike) return false;
if (isAccessories != that.isAccessories) return false;
if (id_odbjednavkyByIdO != that.id_odbjednavkyByIdO) return false;
return true;
}
@Override
public int hashCode() {
int result = id;
result = 31 * result + idProduct;
result = 31 * result + (isBike ? 1 : 0);
result = 31 * result + (isAccessories ? 1 : 0);
return result;
}
@ManyToOne
@JoinColumn(name = "id_objednavky", referencedColumnName = "id", nullable = false)
public ObjednavkaEntity getId_odbjednavkyByIdO() {
return id_odbjednavkyByIdO;
}
public void setId_odbjednavkyByIdO(ObjednavkaEntity idObjednavky) {
this.id_odbjednavkyByIdO = idObjednavky;
}
}
下一个
当我这样做时:
Criteria criteria = session.createCriteria(PolozkyEntity.class);
criteria.add(Restrictions.like("id_odbjednavkyByIdO.id", find));
criteria.add(Restrictions.like("isBike", "true"));
list_pom = criteria.list();
问题出在网络上
criteria.add(Restrictions.like("isBike", "true"));
你能帮我吗?
因此,正如注释中所建议的那样,使用 bike
而不是 isBike
.原因是Hibernate通过getter和setters到达类的属性。因此,Hibernate知道访问财产例如 prop
,它必须使用像getProp()isProp()
和setProp(...)
这样的访问器方法,所以程序员可以简单地使用属性的名称,而不必考虑访问器方法。
当你把isBike
放入你的代码中时,Hibernate正在寻找方法getIsBike()
来访问它,它显然找不到。