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 :

Base avec clé deja présente


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 160
    Par défaut Base avec clé deja présente
    Bonjour,

    J'ai un projet que l 'on migre sur hibernate 2.
    J'ai aussi l outils HibernateSynch pour généré plus facilement mes objets.
    Or voila le soucis que je rencontre:
    premiere ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    javax.servlet.ServletException: java.lang.ExceptionInInitializerError
    	org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:295)
    Et la fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    RAVE: "Servlet.service()" pour la servlet action a généré une exception
    org.xml.sax.SAXParseException: The content of element type "class" must match "(meta*,(cache|jcs-cache)?,(id|composite-id),discriminator?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|any|map|set|list|bag|idbag|array|primitive-array)*,(subclass*|joined-subclass*))".
    	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
    	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
    Si je comprend bien la deniere ligne, je suis sensé avoir un id ou composite id dans mon hbm or hibernate synch ne les a pas généré.
    Que dois-je mettre dans mon hbm pour que cela soit pris en compte et
    Est-ce possible de travailler sur une base avec les id deja défini en base?

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Par défaut
    Bonsoir,

    En effet l'exception est claire : ton fichier de mapping est mal formé.

    Voici un lien pour comprendre la base pour les mappings :

    http://java.developpez.com/faq/hibernate/?page=Mapping

    "Lorsqu'une table n'a pas de clé primaire, le tag <generator .. > à l'intérieur du tag <id .....> </id> n'est pas indispensable car par defaut, il est à "assigned" . Mais le tag <id .....> </id> est obligatoire car Hibernate se sert de ce tag pour rechercher (loader vos objets)."

    Si t'as besoin de plus de précisions, montres nous un de tes fichiers de mapping qu'on puisse voir si d'autres choses clochent !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 160
    Par défaut
    Merci pour ta réponse,

    Ce qui est bizarre c'est que c'est tout de même générer avec hibernate Synchronizer... et que ça me crée une erreur sur quelque chose qui semble pourtant assez "standard" (mapper des tables ayant déjà un id définit à l'intérieur d'elles même...).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
     
    <hibernate-mapping package="com.cartescolaire.hibernante">
    	<class
    		name="FamilleObjetPrestation"
    		table="FAMILLE_OBJET_PRESTATION"
    	>
     
    		<property
    			name="Id"
    			column="ID"
    			type="integer"
    			not-null="true"
    			length="10"
    		/>
    		<property
    			name="IdSurfamobjprest"
    			column="ID_SURFAMOBJPREST"
    			type="integer"
    			not-null="false"
    			length="10"
    		/>
    		<property
    			name="Libelle"
    			column="LIBELLE"
    			type="string"
    			not-null="false"
    			length="30"
    		/>
     
     
    	</class>
    </hibernate-mapping>

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Par défaut
    Essayes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <class name="FamilleObjetPrestation" table="FAMILLE_OBJET_PRESTATION">
    		<id name="Id" type="int">
    			<column name="ID" />
    		</id>
    		<property name="IdSurfamobjprest" column="ID_SURFAMOBJPREST"
    			type="integer" not-null="false" length="10" />
    		<property name="Libelle" column="LIBELLE" type="string"
    			not-null="false" length="30" />
    	</class>
    Tu n'as pas mis de tag id, Hibernate ne pourra pas loader tes objets.

    Dans le code ci-dessus, je n'ai pas indiqué comment ta clé primaire sera affectée.

    Regardes le lien suivant pour comprendre :

    http://www.roseindia.net/hibernate/h...relement.shtml

    Apparement Hibernate Synchroniser traduit mal tes contraintes d'intégrité de clé primaire, ça peut être un défaut du plugin (il faut regarder si les versions de ton Hibernate et du plugin correspondent) ou de conception des contraintes dans ton SGBD.

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    la table dans le SGBD n'a propablement pas de colonne marquée 'unique', donc le synchronizer ne sais pas deviner quelle colonne sert d'ID.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 160
    Par défaut
    Merci pour vos réponses,
    Je vais testé

    la table dans le SGBD n'a propablement pas de colonne marquée 'unique', donc le synchronizer ne sais pas deviner quelle colonne sert d'ID.
    Pourtant j ai des clé primaire sur toutes mes tables...

Discussions similaires

  1. [msde]Exportation de base avec msde..vers Hébergeur.
    Par didoboy dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 30/03/2004, 17h11
  2. [SGBD] Pour moyenne base avec SQL ?
    Par PyRoFlo dans le forum Bases de données
    Réponses: 10
    Dernier message: 13/03/2004, 18h54
  3. Exportation de base avec ASP sous OUTLOOK
    Par M1000 dans le forum ASP
    Réponses: 6
    Dernier message: 04/03/2004, 09h52
  4. Création d'une base avec IbConsole
    Par Lucien dans le forum Outils
    Réponses: 3
    Dernier message: 02/03/2004, 18h34
  5. base avec nom des pays
    Par jack-daniel dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/07/2003, 14h16

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