Oracle 11g + Hibernate -> ORA-01461: peut se lier à une valeur de type LONG seulement pour l'insertion dans une LONGUE colonne

Il y a une erreur dans le journal qui dit:

ORA-01461: peut se lier à une valeur de type LONG seulement pour l'insertion dans une LONGUE colonne

aucune autre information utile, vraiment. J'ai essayé de suivre le code, google-d le problème et je pense avoir trouvé le problème, mais malheureusement je n'ai pas de base de données Oracle ou quoi que ce soit vraiment (même le code n'est pas présent pour moi, je suis en train d'écrire tout cela à partir de la mémoire et notes 🙁 )
Donc, la seule chose que je peux deviner sur la base du code (et beaucoup de googler) est la Chaîne de la cartographie à varchar2.
Certains environnement info:

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

La table comporte plusieurs varchar2(300 octets) et un varchar2(4000 octets), permet d'appel de ce dernier TEXTE. J'ai vérifié l'entité, et dans la colonne d'annotation de ces champs ont une restriction de 300 octets à sa valeur, même le TEXTE (4000 octets) champ! Donc, c'est un étrange point. Mon sauvage supposition est que la Chaîne vient, plus de 300 OCTETS, et c'est l'erreur qui est imprimé dans le journal lors de la tentative de persister (trace de la pile des points où le code tente de persister une instance de cette entité). Malheureusement, je n'ai qu'une session d'aller sur.. 🙁 c'Est ma supposition probable? Ou ça va être quelque chose d'autre?

Voici le champ entity:

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

Ici est l'instruction create (la partie essentielle de toute façon):

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")
   );

(Et la table a un index sur PUBLISH_DATE, si cela est pertinent à tous.)

  • Sonne comme une Hibernate bug/problème alors. Êtes-vous d'utiliser le bon hibernate dialecte?
  • <property name="hibernate.dialecte" value="org.mise en veille prolongée.le dialecte.OracleDialect" />
  • Je pense que vous devriez utiliser org.hibernate.dialect.Oracle10gDialect comme OracleDialect est obsolète: docs.jboss.org/hibernate/core/3.2/api/org/hibernate/dialect/...
  • Merci, je vais essayer ça dès que possible.
  • Changer le dialecte ne résout pas le problème, mais je reçois le message d'erreur si j'essaie d'insérer une Chaîne de caractères plus grands, alors la restriction dans le schéma. Nous devrons utiliser clob je suppose ou écrire le check-in Java.
  • même problème ORA-01461, peut-être que ça va aider quelqu'un: stackoverflow.com/questions/22321663/...

InformationsquelleAutor Revolit | 2013-06-05