2016-04-19 8 views
0

Ich weiß, dass diese Frage schon oft gestellt wurde. Ich habe den gesamten Stack Overflow durchsucht, konnte aber nicht viel daraus machen. Ich verstehe, dass diese Ausnahme auftritt, wenn der Spaltenname, der in der Abfrage verwendet wird, sich von der Eigenschaft unterscheidet, die in der Bean-Klasse angegeben ist. Beide Parameter sind jedoch identisch.HTTP-Status 500 - Kein Datentyp für node: org.hibernate.hql.internal.ast.tree.IdentNode

komplette Fehler:

java.lang.IllegalStateException: Nein Datentyp für Knoten: org.hibernate.hql.internal.ast.tree.IdentNode + - [IDENT] IdentNode: 'iduserInfo' {= Originaltext iduserInfo}

Dies ist meine Frage:

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

Und das ist meine Bean-Klasse:

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

Die Abfrage wird für ALLE Parameter außer iduserInfo und idquestions ausgeführt. Meine Spaltennamen in der Tabelle haben genau dieselben Parameter, obwohl ich sie irgendwo gelesen habe, dass es nichts ausmacht, Sie müssen nur Ihre Parameter mit den Bean-Klassen abgleichen!

+0

Und was ist das Problem genau? – Reinard

Antwort

0

Ich löste das Problem, indem ich die Spaltennamen "iduserInfo" und "idquestion" in "user" bzw. "question" änderte. Ich denke der Grund dafür ist, dass es bereits einen Parameter mit "id" gibt. Ich verstehe nicht, warum das das Problem verursacht hat, aber das Ändern des Spaltennamens in etwas, das nicht einmal entfernt von dem Parameter "id" war, hat den Trick für mich gemacht!