我有两节课。
Occupation.class
@Entity
@Table(name = "occupazione")
public class Occupazione implements java.io.Serializable {
/**
* omitted the fields for brevity
*/
private int idOccupation;
private Posto posto;
@ManyToOne
@JoinColumn(name = "id_posto")
public Posto getPosto() {
return this.posto;
}
public void setPosto(Posto posto) {
this.posto = posto;
}和Posto.class
@Entity
@Table(name = "posti")
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="idPosto")
public class Posto implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int idPosto;
private Piano piano;
@ManyToOne
@JoinColumn(name="id_piano")
@JsonIgnore
public Piano getPiano() {
return piano;
}
public void setPiano(Piano piano) {
this.piano = piano;
}现在,我想检索给定钢琴的所有占用对象
我就是这样做的
Criteria criteria = sess.getSession().createCriteria(Occupation.class).
createCriteria("posto").
add(Restrictions.eq("piano", piano));
return criteria.list();但是我得到了一个例外
org.hibernate.QueryException: could not resolve property: posto of: it.besmart.models.Posto但这很奇怪,因为posto应该指的是职业,而不是Posto本身。
发布于 2016-05-13 01:53:12
更改您的代码
Criteria criteria = sess.getSession().createCriteria(Occupation.class).
createCriteria("posto").
add(Restrictions.eq("piano", piano));至
Criteria criteria = sess.getSession().createCriteria(Occupation.class).
add(Restrictions.eq("piano", piano));希望这能有所帮助。
发布于 2016-05-13 02:56:12
我最终设法解决了这个问题,这很容易用createAlias实现……
Criteria criteria = sess.getSession().createCriteria(Occupation.class).
createAlias("posto", "p").
add(Restrictions.eq("p.piano", piano));https://stackoverflow.com/questions/37193920
复制相似问题