Hibernate: Mapping-Ergebnis-set von native query mit " @SqlResultSetMapping
Ich versuche die folgende:
MyResult.java :
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityResult;
import javax.persistence.SqlResultSetMapping;
@Entity
@SqlResultSetMapping(name = "myResults", entities = {@EntityResult(entityClass = MyResult.class)})
public class MyResult implements Serializable
{
/**
*
*/
private static final long serialVersionUID = -1934790337160508576L;
@Column(name="X")
private int x;
@Column(name="Y")
private double y;
//
//Getters and Setters...
//
}
Und in anderen java-Klasse:
Query q = ((org.hibernate.ejb.QueryImpl) this.entityManager.createNativeQuery (this.sql,
"myResults")).getHibernateQuery ( );
List<MyResult> result = q.list ( );
Wenn ich diesen code bekomme ich:
[PersistenceUnit: MyHibernatePgSql] Nicht konfigurieren EntityManagerFactory
Und wenn ich entfernen die: "@Entity" - Teil aus der MyResult.java ich:
org.hibernate.MappingException: Unbekannt SqlResultSetMapping [myResults]
Ich weiß, dass ich was falsch mache, aber ich weiß nicht, was? Auch ich kann nicht finden, eine gute Dokumentation darüber.
Vielen Dank im Voraus
edit: Die Abfrage sieht wie folgt aus: SELECT X, AGG_FUNC(F) AS Y FROM...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einige Anmerkungen/Fragen:
Erhalten Sie wirklich nur
[PersistenceUnit: MyHibernatePgSql] Unable to configure EntityManagerFactory
ohne stack-trace oder log?Spielt Ihre Person eine
@Id
annotation irgendwo (für eine Person)?Warum nennst du
getHibernateQuery
? Dies scheint unnötig und so sieht der cast in- o.h.e.QueryImpl
.Warum nutzen Sie nicht JPQL (in dem Fall könnten Sie
SELECT NEW
vorausgesetzt, dass Ihr Unternehmen der richtige Konstruktor)?