希伯纳特 - 无法解决财产问题



我使用休眠条件,我想在我的代码中比较变量。但我仍然有这个问题:

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()来访问它,它显然找不到。

最新更新