2 Stimmen

HQL concat Funktion

Meine unterstrichene Datenbank ist MS SQL Server. Ich verwende HQL-Abfrage durch Java Hibernate. Wenn ich die Funktion replace innerhalb von concat verwende, wird die Abfrage falsch interpretiert. Beispiel:

HQL Query : from Project  where replace('\\\\yyy\\\\','\\\\','\\\\\\\\') like concat(replace(projectPathPrefix,'\\\\','\\\\\\\\\\\\\\\\')),'%') and sourceControlSystems=3

SQL interpretation : select * from PRJ_project project where (replace('\\ooo\\', '\\', '\\\\') like replace(project0_.project_path_prefix+'\\'+'\\\\\\\\')+'%' and source_control_system_id=3

Es wandelt auch die Kommas um , von replace-Funktion in + da die äußere Klammer die Funktion concat enthält. Dies funktioniert gut, wenn die untergeordnete Datenbank MySQL oder Oracle ist, da beide die concat-Funktion verwenden. Da SQL Server jedoch den Operator "+" für die Verkettung verwendet, ersetzt HQL die concat-Funktion durch + auf eine sehr absurde Weise. Bitte schlagen Sie eine Lösung für dieses Problem vor.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X