IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Forcer le troncage des champs depassant les 255 chars.


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 193
    Points : 47
    Points
    47
    Par défaut Forcer le troncage des champs depassant les 255 chars.
    Bonjour,
    Voila j'exporte vers oracle des champs dont la taille est helas libre du coté de la source et fixé à 255 coté oracle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	<property name="text4" type="string">
    			<column name="TEXT4" length="255" />
    		</property>

    Comment forcer Hibernate à couper le champs si celui ci depasse les 255 simplement en modifiant le fichier XML de mapping?

    Voici l'exception:

    org.hibernate.exception.ConstraintViolationException: could not update: [com.sgcib.crs.it2.projcom.hibernate.TaskInfo#component[projectId,taskid]{projectId=12EM3L1, taskid=12EM420}]
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2222)
    at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2118)
    at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2374)
    at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:91)
    at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
    at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
    at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
    at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
    at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
    at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
    at com.sgcib.crs.it2.projcom.ExportProjects.exportProjects(ExportProjects.java:331)
    at com.sgcib.crs.it2.projcom.Main.main(Main.java:58)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.lebihan.startup.ConfigStarter.run(ConfigStarter.java:204)
    at com.lebihan.startup.Starter.main(Starter.java:42)
    Caused by: java.sql.BatchUpdateException: ORA-01401: inserted value too large for column

  2. #2
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Tu peux le faire dans le setter de text4 de ta classe:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void setTest4(String text4){
      if (text4.length>255){
        this.text4=text4.substring(0, 255);
      }else{
        this.text4=text4;
      }
    }

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 193
    Points : 47
    Points
    47
    Par défaut
    Je te remercie mais le but est de ne pas toucher au code...

  4. #4
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Et bien en ne precisant pas la longueur dans ton mapping :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	<property name="text4" type="string">
    			<column name="TEXT4"/>
    		</property>

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 193
    Points : 47
    Points
    47
    Par défaut
    Oui mais c pire car c une erreur oracle qui se produira.
    Hibernate n'yant pas de limitation pour ce champs inserera bien plus de 255 char et Oracle renverra l'erreur...

Discussions similaires

  1. Ajuster la taille des champs et les déplacer
    Par dlgdev dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/01/2011, 09h02
  2. Valider qu'une partie des champs avec les annotations
    Par TucoBouch dans le forum Struts 2
    Réponses: 3
    Dernier message: 11/08/2009, 14h26
  3. Forcer la taille des champs
    Par olivanto dans le forum SQL
    Réponses: 3
    Dernier message: 15/04/2008, 11h45
  4. Réponses: 1
    Dernier message: 27/05/2007, 18h56
  5. PROBLEME : Forcer la saisie des Champs numériques!!!!!
    Par Grozeil dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 31/03/2005, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo