Oracle 11g + Hibernate -> ORA-01461: binden eines LONG-Wertes nur zur Einfügung in eine LONG-Spalte

Es ist ein Fehler in der log, der sagt:

ORA-01461: binden eines LONG-Wertes nur zur Einfügung in eine LONG-Spalte

keine andere nützliche info wirklich. Ich habe versucht zu Folgen, bis Sie auf den code, google-d das problem und ich glaube ich habe das problem gefunden, aber leider habe ich nicht auf Oracle-Datenbank oder etwas wirklich (noch ist der code nicht vorhanden zu mir, ich Schreibe all dies aus dem Gedächtnis und Notizen 🙁 )
Also das einzige was ich kann erraten, basierend auf den code (und viel googeln) ist die String-mapping auf varchar2.
Einige Umwelt-info:

Hibernate: 3.2.1.ga
Driver: ojdbc6-11.2.0.2.0.jar
Database: 11.2.0.2.0 - 64bit

Die Tabelle hat mehrere varchar2(300 byte) und einen varchar2(4000 byte), nennen wir in diesem letzten TEXT. Ich habe in der Person und in der Spalte Anmerkung diese Felder haben eine Beschränkung von 300 bytes, um seinen Wert, auch den TEXT (4000 byte) - Feld! Also das ist eine seltsame Punkt. Meine wilde Vermutung ist, dass ein String kommt, größer als 300 BYTE, und das ist der Fehler, gedruckt in der log, wenn Sie versuchen zu bestehen (stack-trace-Punkte, wo der code versucht, darauf zu bestehen, dass eine Instanz dieser entity). Leider habe ich nur noch das Protokoll zu gehen.. 🙁 Ist meine Vermutung wahrscheinlich? Oder es wird etwas anderes sein?

Hier ist die Entität Feld:

@Column(name = "TEXT", nullable = false, length = varcharLength)
public String getText() {
    return text;
}

Hier ist die create-Anweisung (der wesentliche Teil jedenfalls):

CREATE TABLE "TABLENAME" 
   (
   "ID" VARCHAR2(300 BYTE) NOT NULL ENABLE, 
   "VERSION" NUMBER(10,0), 
   "TEXT" VARCHAR2(4000 BYTE) NOT NULL ENABLE, 
   "PUBLISH_DATE" DATE NOT NULL ENABLE, 
   PRIMARY KEY ("ID")
   );

(Und die Tabelle hat einen index auf PUBLISH_DATE, wenn das relevant ist, oder?)

  • Klingt wie ein Hibernate-bug/ - problem, dann. Verwenden Sie die richtige hibernate-Dialekt?
  • <property name="hibernate.dialect" value="org.hibernate.Dialekt.OracleDialect" />
  • Ich glaube, Sie sollten org.hibernate.dialect.Oracle10gDialect als OracleDialect ist veraltet: docs.jboss.org/hibernate/core/3.2/api/org/hibernate/dialect/...
  • Danke, ich werde versuchen, so bald wie möglich.
  • Ändern der Dialekt das problem nicht lösen, aber ich bekomme die Fehlermeldung wenn ich versuche eine Zeichenfolge einfügen größer als die Einschränkung im schema. Wir müssen clob ich denke, oder schreiben Sie den check-in Java.
  • gleiche problem ORA-01461, vielleicht hilft es jemand: stackoverflow.com/questions/22321663/...

InformationsquelleAutor Revolit | 2013-06-05
Schreibe einen Kommentar