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]列。