首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate:如何从查询结果中获取属性?

Hibernate:如何从查询结果中获取属性?
EN

Stack Overflow用户
提问于 2017-03-21 06:53:40
回答 1查看 297关注 0票数 0

我正在尝试执行下面提到的查询,它在mysql中工作,但在Hibernate(hql)上不起作用,结果不正确。我的查询结果必须是一条记录,但在Hibernate中我得到了两条记录。有没有可能Hibernate不执行group by (在我的查询中),因此结果由两个ids组成?

代码语言:javascript
复制
Query query = session.createQuery("select avg(valore)as punteggio,id,  from Voto  where STR_TO_DATE(datav,'%Y-%m-%d')> CURRENT_DATE - 7 group by id order by punteggio DESC");

List<Object[]> list = query.list();
if(list.size()> 0)
{ 
    System.out.println(list.size());
    for (Object[] aRow : list) {
        Integer sum = (Integer) aRow[0];
        Integer category = (Integer) aRow[1];
        System.out.println(category +" - " + sum);
    }
}

这是我的Hibernate代码

代码语言:javascript
复制
@Entity
@Table(name="Voto")

public class Voto{
    @Id
     @GeneratedValue
    @Column(name = "idv")
    private int idv;
    @Column(name = "valore")
    private int valore;
    @Column(name = "datav")
    private String datav;
     @ManyToOne
        @JoinColumn(name = "idp")
        private Pubblico pubblico;
     @ManyToOne
        @JoinColumn(name = "id")
        private Artista artista;
    public Voto(int idv,int valore,String datav,Pubblico pubblico, Artista artista){
        this.idv=idv;
        this.valore=valore;
        this.datav=datav;
        this.pubblico=pubblico;
        this.artista=artista;
    }

    public Voto() {
        // TODO Auto-generated constructor stub
    }

    public int getidv() {
        return idv;
    }
    public void setidv(int idv) {
        this.idv = idv;
    }
    public int getvalaore() {
        return valore;
    }
    public void setvalore(int valore) {
        this.valore = valore;
    }
    public String getdatav() {
        return datav;
    }
    public void setdatav(String datav) {
        this.datav= datav;
    }
    public Pubblico getPubblico() {
        return pubblico;
    }
    public void setPubblico(Pubblico pubblico) {
        this.pubblico = pubblico;
    }
    public Artista getArtista() {
        return artista;
    }
    public void setArtista(Artista artista) {
        this.artista = artista;
    }


}

请帮帮我。

EN

回答 1

Stack Overflow用户

发布于 2017-03-21 07:38:23

我会将id列添加到实体对象中

代码语言:javascript
复制
@Column(name = "id", insertable=false, updateable=false)
private String id;

然后使用如下所示的Criteria

代码语言:javascript
复制
List result = session.createCriteria(Voto.class)       
              .setProjection(Projections.projectionList()
                      .add(Projections.groupProperty("id"))
                      .add(Projections.avg("valore"))
              ).list();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42915443

复制
相关文章

相似问题

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