Hibernate - DB Function benutzen

y0dA

Erfahrenes Mitglied
Hi!
Wie kann ich folgendes für Hibernate benutzen, damit ich den Return Wert der Funktion bekomme?
Code:
select f_dbk (3150) from dual
 
F_DBK ist ein Function welche eine Parameter übergeben bekommt () und einen Wert (String) zurück liefert
 
Und diese Funktion ist in der Datenbank abgelegt und nicht im Java-Programm? ... sowas kenn ich leider nur theoretisch aus einer Vorlesung zu DB2 ...

Ich würde mal behaupten, dass das so einfach nicht geht, weil für Funktionen ja wohl kein Mapping existiert. (Aber die Hibernate-Profis hier werden mich gleich wohl wieder korrigieren *g*).

Mein Ansatz wäre vermutlich einfach das Hibernate zu umgehen ...

Code:
String str = (String) hibernateSession.createSQLQuery("select f_dbk (3150) from dual").uniqueResult();
 
Jo die Funktion gibt es in der Oracle DB.

**EDIT**
btw dein Ansatz funktioniert einwandfrei, jedoch stellt sich mir die Frage ob ich das auch irgendwie mit createQuery zamm bringe - also dass ich Hibernate nicht umgehe.

mfg
 
Zuletzt bearbeitet:
Also ich denke nicht dass man mit HQL Funktionen der Datenbanken verwenden kann. Falls diese Aussage falsch ist bitte korrigieren.
Du kannst mit Hibernate SQL-Statements absetzen. Damit müsste es dann funktionieren.

Code:
SQLQuery query = session.createSQLQuery("select f_dbk (3150) from dual");
List list = query.list();
for (int i = 0; i < list.size(); i++) {
	System.out.println(list.get(i));
}

MFG

zEriX


EDIT
Da war wohl jemand schneller :-)
 
Zuletzt bearbeitet:
Na denn, dann lasse ich den Thread noch ein wenig "unerledigt" vllt weiß ja jemand eine HQL Lösung.

Eure beiden Ansätze funktionieren, jedoch da ich eh nur einen Wert zurückbekomme nehme ich die obere Lösung.

Danke euch!
 
Also ich würde mal sagen, dass es mit HQL nicht geht, weil HQL die Sprache von Hibernate ist und Hibernate somit die Eigenheiten jeder Datenbank berücksichtigen müsste. Ich denke mal das ist dann ein Grund warum man SQL-Statements mit Hibernate absetzen kann.
Bei Falschaussage bitte korrigieren. :-)

MFG

zEriX
 
Zurück