HTTP状态500 - 节点没有数据类型:org.hibernate.hql.internal.ast.tree.IdentNode

时间:2016-04-19 07:39:07

标签: java hibernate rest hql

我知道很多次都会问过这个问题。我已经搜索了整个Stack Overflow,但是还没有能够从中获得更多。我知道当查询中使用的列名与bean类中指定的属性不同时会出现此异常,但是,我的两个参数都是相同的。

完成错误:

java.lang.IllegalStateException:没有节点的数据类型:org.hibernate.hql.internal.ast.tree.IdentNode  + - [IDENT] IdentNode:' iduserInfo' {originalText = iduserInfo}

这是我的疑问:

List<Object[]>  tuples = session.createQuery( "select iduserInfo, SUM(points) from " + persistentClass.getName() 
            + " GROUP BY iduserInfo "
            + "ORDER BY SUM(points) DESC").list();

这是我的bean类:

@XmlRootElement
@Entity
@Table(name = "userInfo")
public class UserInfo {

protected @XmlElement int id;
protected @XmlElement int iduserInfo;
protected @XmlElement int idquestion;
protected @XmlElement String location;
protected @XmlElement String state;
protected @XmlElement String type;
protected @XmlElement Date timestamp;
protected @XmlElement Double latitude;
protected @XmlElement Double longitude;
protected @XmlElement Integer points;  

查询将运行除iduserInfo和idquestions之外的所有参数。我在表中的列名具有完全相同的参数,虽然我在某处读到它并不重要,但您只需要将参数与bean类匹配!

1 个答案:

答案 0 :(得分:0)

我通过更改列名&#34; iduserInfo&#34;解决了这个问题。和&#34; idquestion&#34;到&#34;用户&#34;和&#34;问题&#34;分别。我认为这样做的原因是已经存在&#34; id&#34;的参数。我不明白为什么会导致这个问题,但是将列名更改为甚至远不及参数&#34; id&#34;为我做了诀窍!