Hibernate SQLQuery, unknown entity

petepan123

Grünschnabel
Hallo,

Ich versuche mit einem definierten SQL Query mittels Hibernate aus einer Tabelle zu lesen, die ich nicht irgendwo im Mapping file definiert habe (ist eine Tabelle aus einem anderen Schema, wo ich nur Lesend zugreife).

String queryStr = "select cust.id as {customer.id}, cust.name as {customer.name}
from schema.customer cust";

SQLQuery query = aSession.createSQLQuery(queryStr);
query.addEntity("customer", MyCustomerClass.class);

List results = query.list();

wobei MyCustomerClass ein einfaches Pojo Bean ist mit eben den gettern und settern für die attribute die ich im Query unter {} ansteuere.
Das Bean ist nicht in irgendeinem MappingFile oder sonstwo definiert.

Ich erhalte die Fehlermeldung:
org.hibernate.MappingException: Unknown entity: MyCustomerClass

Da das Programm einwandfrei kompiliert ist die Klasse jedenfalls vorhanden und kann auch zur Laufzeit gefunden werden. Muss ich die Tabelle dann doch im Mapping File definieren? Wenn ja wie kann ich dann einfach aus einer Tabell in ein Objekt einlesen ohne das über das Mapping File machen zu müssen (ich möchte ja nur von der Tabelle lesen).

Danke
 
Hi,

Hibernate braucht leider noch Informationen über Datenbankverbindung, Tabellen und eben auch Mapping Informationen (XML, Annotations,...) ansonsten weiß Hibernate nichts mit den Klassen anzufangen. Diese Dateien sind quasi die Brücke zwischen DB und POJO auch wenn du nur lesend zugreifen möchtest.

Gruß

Romsl
 
Hm, das heißt ich muss im Hibernate Mapping File einen neuen Class eintrag machen?
Muss der dann genau der Tabelle entsprechen? Ich Joine nämlich über mehrere Tabellen um z.B. zu einem FK gleich den Wert in meinem Objekt zu haben (also die Beziehungen aufzulösen).

Im Prinzip will ich die Tabelle anderesschema.Customer in eine Liste von CustomerObjekten einlesen und dort die CustomerClassID (FK zu CustomerClass) auflösen, so dass ich in meinem Objekt nicht die ID sondern k.a. "Stammkunde" gleich drinnen hab.

Danke nochmals
 
Zurück