我知道很多次都会问过这个问题。我已经搜索了整个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类匹配!
答案 0 :(得分:0)
我通过更改列名&#34; iduserInfo&#34;解决了这个问题。和&#34; idquestion&#34;到&#34;用户&#34;和&#34;问题&#34;分别。我认为这样做的原因是已经存在&#34; id&#34;的参数。我不明白为什么会导致这个问题,但是将列名更改为甚至远不及参数&#34; id&#34;为我做了诀窍!