+ Antworten
Ergebnis 1 bis 3 von 3

Thema: Hibernate, Oracle, Codepage

  1. #1
    User short Themenstarter

    Registriert seit
    01.07.2014
    Fachbeiträge
    16
    Genannt
    0 Post(s)
    Hallo,

    wer macht die Codepageumrubbelung wenn man via Hibernate ein Objekt mit einem Javastring (der Max-Länge 255) in eine Oracle-Tabelle mit einem Varchar(2) der Länge 255 ballert?
    Wie die Oracle konfiguriert ist, weiss ich nicht. (müsste ich über Umwegen in Erfahrung bringen).
    Die Hibernate-Config ist ohne explizite Codepage. Was wird da genommen? System?

    Problem ist dass der String kleiner als 255 ist, aber ORACLE meckert, dass er 260 lang ist. Anscheind wird er in UFT-8 gewandelt?
    Wer macht das?
    Das ist gerade eine Blackbox bei mir.

    Gruß Thomas

  2. #2
    Global Moderator Viertel Gigabyte Avatar von SlaterB
    Registriert seit
    06.08.2008
    Fachbeiträge
    2.695
    Genannt
    275 Post(s)
    keine genaue Antwort, aber womöglich hilfreiche Hinweise:

    teste doch erstmal was gespeichert wird:
    nimm 10 Zeichen weg, speichere also 245, ist die Länge in der DB ~250, length()-Funktion?

    schau dir genau an welche 250 Zeichen, soweit möglich, oder sind komplizierte unsichtbare wie Tab/ Zeilenumbruch dabei?,
    gerade Zeilenumbruch kann ja mal \n, mal \r\n sein, ein oder zwei Zeichen

    vergleiche mit Länge in Java an klar definierten Grenzen,
    frage ggfs. einzelne Chars in einer Schleife ab von Java aus, wenn in DB nicht so genau darzustellen, oder geht dort Umwandlung in int?
    Hansa wird Meister

  3. #3
    User Viertel Megabyte Avatar von inv_zim
    Registriert seit
    31.07.2013
    Ort
    Rhein-Main Gebiet
    Fachbeiträge
    358
    Genannt
    31 Post(s)
    Zitat Zitat von ThomasT Beitrag anzeigen
    wer macht die Codepageumrubbelung wenn man via Hibernate ein Objekt mit einem Javastring (der Max-Länge 255) in eine Oracle-Tabelle mit einem Varchar(2) der Länge 255 ballert?
    Die Codepage sollte von JDBC gesetzt werden, welches Setup hast du? Standalone Anwendung oder Applicationserver mit Datasource?

    Bei Oracle ist VARCHAR(256) aber auch nicht gleich VARCHAR(256): Hier unterscheidet Oracle zwischen VARCHAR(256 BYTE) und VARCHAR(256 CHARACTER). Das Problem hatte ich auch erst letztens, diese Erklärung hat mir sehr geholfen: sql - Difference between BYTE and CHAR in column datatypes - Stack Overflow

    VARCHAR(256 CHARACTER) erlaubt dir, 256 Zeichen zu speichern, das sollte der Datentyp sein den du möchtest. VARCHAR(256 BYTE) erlaubt dir 256 Byte zu speichern, 1 Unicode Character kann aber mehr als 1 Byte belegen. "regenbogen" hat nur 'normale' Character aus dem ASCII Raum, 10 Zeichen = 10 Byte. 'Überrollbügel' hat 13 Characters und 15 Bytes.

    BYTE ist das Default Verhalten, ich würde also davon ausgehen dass die Column nur mit VARCHAR(256) ohne weiteren Bezeichner erstellt wurde.
    Geändert von inv_zim (13.12.2016 um 11:38 Uhr)
    I am obsessed with the ancient science of "puzzle-ometry". I have discovered that within puzzles lies the secret of human intelligence, that which separates us from the common beast.

+ Antworten Thema als "gelöst" markieren

Direkt antworten Direkt antworten

Das Gegenteil von laut ist... ?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 11.08.2016, 22:00
  2. Hibernate iterate
    Von SlaterB im Forum APIs & Frameworks
    Antworten: 8
    Letzter Beitrag: 24.03.2015, 14:38
  3. JPA und Hibernate
    Von Timo im Forum Java-Grundlagen
    Antworten: 8
    Letzter Beitrag: 28.01.2015, 10:44
  4. RMI und Hibernate
    Von xell66 im Forum Netzwerkprogrammierung
    Antworten: 2
    Letzter Beitrag: 02.12.2013, 19:19
  5. Oracle Developer / Oracle Entwickler (m/w) im Volkswagen Konzern
    Von AutoVisionGmbH im Forum Angebote von Agenturen
    Antworten: 0
    Letzter Beitrag: 15.07.2013, 11:32

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •