gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 10:56:46 26 4
gpt4 key购买 nike

我正在尝试执行下面提到的查询,该查询在 mysql 中有效,但在 Hibernate(hql) 上无效,结果不正确。我的查询结果必须是一条记录,但在 Hibernate 中我得到两条记录。 Hibernate 是否有可能不执行 group by(在我的查询中),因此结果由两个 id 组成?

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 代码

@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;
}


}

请帮助我。

最佳答案

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

@Column(name = "id", insertable=false, updateable=false)
private String id;

然后使用像这样的Criteria:

List result = session.createCriteria(Voto.class)       
.setProjection(Projections.projectionList()
.add(Projections.groupProperty("id"))
.add(Projections.avg("valore"))
).list();

关于java - Hibernate:如何从查询结果中获取属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42915443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com