# hibernate-Mapping schlägt fehl



## Samson_Miller (15. Dez 2008)

Ich weiß das die Fehlermeldung in diesem Forum schon diskutiert wurde, aber ich habe bisher keine Lösung gefunden, die mir geholfen hat.

Ich fange gerade an mit Hibernate auf die Datenbank zuzugreifen und bekomme immer die Fehlermeldung:

```
org.hibernate.hql.ast.QuerySyntaxException: TEST.USER is not mapped [SELECT user_id, user_name from TEST.USER where user_code = :user_code]
```

Es geht um die Tabelle "USER" die in der Datenbank in dem Schema "TEST" liegt.

Ich habe eine POJO-Klasse für die Tabelle USER mit dem Namen "TEST_User" erstellt. Dazu ein Mapping mit dem namen "TEST_User.hbm.xml". Und in der "hibernate.cfg.xml" habe ich auch unter dem Eintrag "<mapping ressource"" /> den Pfad zur "TEST_User.hbm.xml" hinterlegt.

Wenn ich jetzt die Abfrage an die Datenbank senden will, mittels: 


```
begin();
Query query = getSession().createQuery("SELECT user_id, user_name from TEST.USER where user_code = :user_code");
query.setString("user_code", user_code);
TEST_User user = (TEST_User) query.uniqueResult();
commit();
return user;
```

dann bekomme ich die oben genannte Fehlermeldung. Was mache ich falsch?


----------



## SlaterB (15. Dez 2008)

lasse das Schema weg, habe bisher noch keine Schema-Angaben in HQL gesehen


----------



## Samson_Miller (15. Dez 2008)

Was ist denn wenn ich in der Datenbank zwei Tabellen habe die gleich heißen, aber ein anderes Schema besitzen. Dann kann ich die Tabelle nur über das Schema eindeutig identifizieren.


----------



## SlaterB (15. Dez 2008)

tja, Experte bin ich nicht,

nach kurzer google-Suche gabs
http://www.galileocomputing.de/artikel/gp/artikelID-328


> @javax.persistence.Table
> [..]
> 
> schema = "dbSchemaName",
> ...


also vermute ich jetzt mal, dass man das, wenn überhaupt einstellbar, im Hibernate-Mapping pro Java-Klasse angeben muss,

denn stell dir vor, du erzeugst ein neues
TEST_User-Objekt x und speicherst es mit dem Hibernate-Code
session.save(x);

an welcher Code-Stelle wolltest du hier angeben, in welcher Tabelle das zu speichern ist?
sowas muss vorher passieren, entweder global bei der Konfiguration der Hibernate-Connection oder anscheinend pro Klassen-Mapping einzeln


----------



## Samson_Miller (15. Dez 2008)

Wenn ich das Schema weglasse, bekomme ich im Übrigen die gleiche Fehlermeldung.


----------



## SlaterB (15. Dez 2008)

Samson_Miller hat gesagt.:
			
		

> Wenn ich das Schema weglasse, bekomme ich im Übrigen die gleiche Fehlermeldung.


deine Java-Klasse heißt TEST_User, also kannst du in HQL auch nur TEST_User schreiben, nicht User, was soll User sein? nicht gemappt


----------



## Samson_Miller (16. Dez 2008)

Wie genau müsste dann die Datenbank-Abfrage aussehen?


----------



## SlaterB (16. Dez 2008)

"SELECT user_id, user_name from TEST_User where user_code = :user_code"
genau dann, wenn die Java-Klasse TEST_User heißt und getter/ setter getUser_id() usw. hat

setzt man eine ordentlich formatierte Java-Klasse voraus, so würde die Query viel eher
"SELECT id, name from User where code = :userCode"
lauten,
also ein Klasse User mit getId, getName usw.


----------



## Samson_Miller (16. Dez 2008)

Ja super, es hat geklappt. Danke


----------

