Hibernate + Oracle lower()

darksmilie

Erfahrenes Mitglied
Hi
weiß einer wie man in Oracle ein Select mit Lower schreibt?

in meinem Programm ist es so:
Code:
Criteria criteria = session.createCriteria(getStoredClass()).add(Restrictions.like("lower("+field+")",argument.toLowerCase()+"%"));
 
Hallo!

An Restrictions gibts noch die Methode(n) sqlRestriction(...) vielleicht solltest du's einfach mal damit versuchen.

Gruß Tom
 
Hi

Danke jetzt bekomme ich immerhin keine Hibernate Exception sonder eine java.lang.NullPointerException :(

Code:
Criteria criteria = session.createCriteria(getStoredClass()).add(Restrictions.sqlRestriction("lower({"+field+"}.name) like lower("+argument+"%)"));
 
Naja ich übergebe dem Criteria nur zwei Werte einmal wie der feldname heißt und einmal den Wert der gesucht werden soll.
 
Hat er :)!

Danke Tom.

Hier ist die Lösung:
Code:
Criteria criteria = session.createCriteria(getStoredClass()).add(Restrictions.sqlRestriction("lower("+field+") like lower(?)",argument.toLowerCase()+"%",Hibernate.STRING));
 
Hallo darksmilie,

da ich auch die CriteriaAPI verwende und "lower" benötige, habe ich diesesn Thread hier gefunden. Mir ist nur eine Kleinigkeit in Deinem Code aufgefallen, die noch getuned werden kann.
Du hast ein "lower" zu viel drin. Du kannst entweder das "lower" im SQL-Statement nach "like" rausnehmen, oder Dir das im Javacode .toLowerCase() sparen.

Wenn Du es von Java machen lässt, muss die Datenbank den String nicht erst parsen .. könnte performanter sein.
 
Mach das Meine Anwort "falscher"?

Ich hab den Thread doch auch erst nach 2 Jahren gefunden .. vielleicht braucht in 2 Jahren wieder jmd. dieses Info, und dann hat dieser jmd. einen Tipp mehr bekommen.

MfG
TheSmile
 
Zurück