DonUschi Geschrieben 18. März 2010 Geschrieben 18. März 2010 Moin, ich habe sehr merkwürdige Probleme mit der Codierung. Zwei Szenarien: 1. Unter Eclipse wird mit JUnit OpenEJB und Hibernate getestet. Hier läuft alles Glatt. In der Datenbank stehen umlaute und "ß" die wir aus ner import.sql da reinbringen. Abfragen mit suche nach diesen String funktionieren ebenso. (Enthält auch in den Javaklassen "ß" und Umlaute) 2. Maven Startet diese Tests. In der Datenbank steht Kuddelmuddel. Die Abfragen aus der DB knallen. Nun habe ich herausgefunden, dass man ausser einen eigenen HibernateDialect keine Zeichencodierung einstellen kann in Hibernate. Fragen: Warum zum Geier funktionierts dann unter Eclipse so prächtig?! Gibt es vielleicht doch eine ganz einfache Configuration von Hibernate? Seht ihr neben Hibernate andere Stellen die konfiguriert werden müssten? (Maven Compiler und Resource Plugins nutzen schon UTF-8 encoding - daran liegt es nicht) Gruß, Uschi Zitieren
DonUschi Geschrieben 18. März 2010 Autor Geschrieben 18. März 2010 Am Ende des Tages ein paar zustäzliche Infos: OracleXE hat nun intern UTF-8. Passend zu der Wunderlichen Tatsache, dass die gleichen Tests über Eclipse funktionieren, bei einem Maven install nicht, hat das nichts gebracht. Nun wollte ich tricksen und in Eclipse die Datenbank füllen lassen. Wenn ich danach "hibernate.hbm2ddl.auto" auf "validate" statt auf "create" setze, dachte ich mir: "Ha!, Datenbank richtig gefüllt, dann können die SQL Querys auch was zurück geben." Pustekuchen. Nun bekomm ich die Exception: org.apache.openejb.OpenEJBException: Creating application failed: classpath.ear: javax.persistence.PersistenceException: [PersistenceUnit: UserPU] Unable to build EntityManagerFactory: [PersistenceUnit: UserPU] Unable to build EntityManagerFactory Caused by: org.hibernate.HibernateException: Wrong column type in USER.TABLE for column COLUMN. Found: number, expected: NUMERIC(10,2) Zitieren
DonUschi Geschrieben 19. März 2010 Autor Geschrieben 19. März 2010 Schuldig ist definitiv Hibernate. Eine OracleXE mit UTF-8 hats nicht gebracht. Die Datenbank lässt sich aus dem Programmcode über Hibernate in Eclipse wie auch Maven korrekt Befüllen. Einzig und allein beim Ausführen von Maven, wenn Maven oder Hibernate nach *.sql Dateien im Resource-Verzeichnis suchen um die Datenbank damit zu befüllen gibt es einen Zeichenkodierungsfehler. Da kann doch nun bestimmt jemand Infos zu geben =) Das problem ist ja nun gut eingekreist ^^ GutenachtGruß, Uschi Zitieren
kingofbrain Geschrieben 19. März 2010 Geschrieben 19. März 2010 Vermutlich werden die Dateien Sonderzeichen enthalten, die in der falschen Kodierung vorliegen. Wenn Du die SQL-Dateien einliest, in welcher Kodierung werden sie gelesen und in welcher Kodierung liegen sie vor? Peter Zitieren
DonUschi Geschrieben 19. März 2010 Autor Geschrieben 19. März 2010 das ists ja grade. ich habe keine ahnung wie openejb und hibernate das machen! die datei liegt in utf-8 vor und natürlich enthalten sie sonderzeichen. sonst hätte ich ja keine probleme ^^! Zitieren
Haschman Geschrieben 19. März 2010 Geschrieben 19. März 2010 Du kannst beim start einer jeder beliebeigen Java anwendung auch den Zeichensatz angeben. Dies geschieht mittels -D anweisung beim Programmstart. Es kann sein, das Eclipse das automatisch erkennt. Bin mir da aber nicht sicher. Das ist auf jeden fall der Ansatz, nach dem du suchen solltest. -Dfile.encoding=UTF-8 Zitieren
DonUschi Geschrieben 20. März 2010 Autor Geschrieben 20. März 2010 Ich habe das Encoding von Eclipse schon auf UTF-8 gestellt. In den Properties der *.sql steht dann auch UTF-8. Beliebig änderbar. Maven hab ich ja auch das kopieren der Resourcen und den Compiler auf UTF8 gestellt. Kann also nur openejb-hibernate sein. was anderes bleibt nicht übrig. Hibernate sucht doch in den Resourcen nach *.sql Files oder tut das der Container(openEJB)? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.