So speichern Sie eine Zeichenfolge mit einfachen Anführungszeichen in einer Textspalte in PostgreSQL

8

Ich benutze Hibernate und PostgreSQL als Datenbank im Smartwcm Web Application SDK. Ich habe ein Feld in einer der Tabellen und sein Datentyp ist Text. Wenn ich versuche, Werte in die Tabelle einzufügen, die Hibernate mit dem entsprechenden POJO verwenden, wird eine Ausnahme ausgelöst, wenn der String, den ich in der Datenbank speichern möchte, ' enthält.

Die Ausnahmebedingungsnachricht lautet:

%Vor%

Mein Java-Objekt, das der Tabelle entspricht, wäre:

%Vor%

Das Feld mit dem Namen customHtml enthält den Wert, der in der Datenbankspalte des Datentyps text gespeichert werden soll.

Mein Code zum Speichern des Objekts lautet:

%Vor%

Die Ausnahme, die ich bekomme, ist:

%Vor%

Die Hibernate-Mapping-Datei, die ich verwende, ist:

%Vor%     
Geo Thomas 12.06.2015, 17:51
quelle

2 Antworten

4

Ich glaube nicht, dass das Problem durch ein Zitat in einer String-Spalte verursacht wird. Hibernate verwendet PreparedStatements , und diese Art von Problem wäre wahrscheinlicher beim Verketten von plain Statements .

Die folgenden GitHub-Test beweist meine Annahmen auch.

Trotzdem sehe ich ein mögliches Problem in den von Ihnen verwendeten Abhängigkeitsversionen:

%Vor%

Obwohl Sie immer noch Hibernate 3.5 verwenden, ist die PostgreSQL-Treiberversion viel zu alt: postgresql-7.4.1-jdbc3 , die auf 2003 zurückgeht. Wie jede andere Softwarebibliothek haben Datenbanktreiber auch Fehler.

Versuchen Sie, den Treiber auf eine neuere Version zu aktualisieren, die mit Ihrer Datenbankversion kompatibel ist, die Sie in der Produktion ausführen.

    
Vlad Mihalcea 01.11.2015 09:48
quelle
2

Basierend auf dem, was Sie gepostet haben, scheint das Problem nicht bei customHtml zu liegen. Hibernate kann mit Text arbeiten, der Anführungszeichen enthält, da intern Bind-Variablen verwendet werden, um die Daten festzulegen. Also ich glaube nicht, dass das dein Problem ist.

Das Problem tritt bei einer UPDATE-Abfrage auf, die nicht ordnungsgemäß erstellt wurde. Die Abfrage ändert ein Objekt, das sich auf die Schiebereglergruppe bezieht. Bitte überprüfen Sie Ihren Code und beheben Sie die HQL / SQL-Abfrage.

    
codedabbler 12.06.2015 18:07
quelle

Tags und Links