Java 无法解析Hibernate条件中的属性

Java 无法解析Hibernate条件中的属性,java,hibernate,criteria,criterion,Java,Hibernate,Criteria,Criterion,我有两个实体,其摘录如下: public class Visita { @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="pdv_uid") private PuntoDeVenta pdv; } public class PuntoDeVenta { private Integer idclient; private String zona; @ManyToOne @JoinCol

我有两个实体,其摘录如下:

public class Visita {
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="pdv_uid")
    private PuntoDeVenta pdv;
}

public class PuntoDeVenta {
    private Integer idclient;

    private String zona;

    @ManyToOne
    @JoinColumn(name="pdv_categoria_uid", nullable=true)
    private PuntoDeVentaCategoria categoria;
}

public class PuntoDeVentaCategoria {
    private String descripcion;
}
我尝试对不同的字段进行限制,其中一些有效,一些无效

使用此根标准:

Criteria criteria =   sessionFactory.getCurrentSession().createCriteria(Visita.class).createAlias("pdv", "pdv");
我尝试对“PuntoDeVenta”和“PuntoDeVentaCategoria”(带和不带createAlias)的不同字段进行限制,得到异常“无法解析属性”,例如:

Criteria criteria =   sessionFactory.getCurrentSession().createCriteria(Visita.class).createAlias("pdv", "pdv").add(Restrictions.eq("pdv.categoria.descripcion", "example"));
提前感谢您

再添加一行

Criteria criteria =   sessionFactory.getCurrentSession().createCriteria(Visita.class).createAlias("pdv", "pdv");

criteria.createAlias("pdv.categoria", "categoria");
现在它的工作方式如下

criteria.add(Restrictions.eq("categoria.descripcion", "example"));

你的代码中可能存在的副本有很多注释丢失,但是我们认为它们存在。我还没有尝试过你的代码,但是,例如,这个查询也不起作用:标准准则= SeaStudio.GETCurrursSudio()。CealEcrrTyrIa(Visual.class)。createAlias(“PDV”,“PDV”)。添加(限制。EQ(“PDV.ZONA”,“示例”));我为pdv创建了别名…“pdv.zona”应该可以工作,而zona字段是用@Column right注释的?它不是用@Column注释的,因为它与数据库中的名称相同。我应该注释它吗?我认为当它的名称与DB中的名称相同时,如果您希望名称大于write@Column(name=“colName”)并且不希望名称大于write@Column,则不需要该注释。最终hibernate应该知道这个列,所以需要[at]列。