Zu folgendem Problem habe ich im Forum noch keine passende Loesung gefunden, bzw. die Loesungsansaetze scheinen bei mir nicht zu helfen:
Ich habe eine Website in UTF-8 mit einem Suchformular. Als Datenbank ist Postgres8.x mit einer UTF-8 Datenbank im Einsatz. Laden und Speichern von Objekten mit Umlauten im Text funktioniert, aber die Suche via Restrictions.like leider nicht.
Zur DB-Connection-url habe ich den Parameter characterEncoding zugfuegt:
Code:
<property name="jdbcUrl"><value>jdbc:postgresql://server:5432/dbname?characterEncoding=UTF-8</value></property>
In den Hibernate properties habe ich gesetzt:
Code:
<prop key="hibernate.connection.lc_type">UTF-8</prop>
Ich moechte nun also via Restrictions.like suchen, also habe ich hierfuer:
Code:
.add(Restrictions.like("office.title", this.query.toLowerCase(),MatchMode.ANYWHERE).ignoreCase())
Die Suche nach 'südpfalz', die definitiv in der DB vorhanden ist, gibt kein Ergebnis, wenn ich jedoch nur 'pfalz' eingebe, wird etwas gefunden.
Es scheint ein Problem mit dem Umlaut (ü). Aber wie ich es anhand des Logfiles sehe ist das Encoding bis hin zur Query-Ausfuehrung korrekt, zumindest habe ich im Log:
Code:
<Values (DetachableCriteria(CriteriaImpl(com.company.model.realty.LocalizedRealtyData:this[Subcriteria(realty:realty), Subcriteria(realty.office:office)][locale=de, (), (office.title like %südpfalz% or realty.no like %südpfalz% or title like %südpfalz%)])))>
Postgres-Treiber und Hibernate ist auf dem aktuellsten Stand: postgres-jdbc-driver 8.3.603 und hibernate 3.2.
Als Letztes habe ich auch noch versucht, file.encoding auf UTF-8 zu setzen (in der jsp der Formulares, was ja ausreichend sein sollte).
Kennt jemand dieses Problem?