首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate双层标准

Hibernate双层标准
EN

Stack Overflow用户
提问于 2016-05-13 01:38:32
回答 2查看 16关注 0票数 0

我有两节课。

Occupation.class

代码语言:javascript
复制
@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

代码语言:javascript
复制
@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;
    }

现在,我想检索给定钢琴的所有占用对象

我就是这样做的

代码语言:javascript
复制
Criteria criteria = sess.getSession().createCriteria(Occupation.class).
                            createCriteria("posto").
        add(Restrictions.eq("piano", piano));

        return criteria.list();

但是我得到了一个例外

代码语言:javascript
复制
org.hibernate.QueryException: could not resolve property: posto of: it.besmart.models.Posto

但这很奇怪,因为posto应该指的是职业,而不是Posto本身。

EN

回答 2

Stack Overflow用户

发布于 2016-05-13 01:53:12

更改您的代码

代码语言:javascript
复制
Criteria criteria = sess.getSession().createCriteria(Occupation.class).
                            createCriteria("posto").
        add(Restrictions.eq("piano", piano));

代码语言:javascript
复制
Criteria criteria = sess.getSession().createCriteria(Occupation.class).
        add(Restrictions.eq("piano", piano));

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2016-05-13 02:56:12

我最终设法解决了这个问题,这很容易用createAlias实现……

代码语言:javascript
复制
Criteria criteria = sess.getSession().createCriteria(Occupation.class).
                            createAlias("posto", "p").
        add(Restrictions.eq("p.piano", piano));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37193920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档