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 :

Field 'Nom' doesn't have a default value


Sujet :

Hibernate Java

  1. #1
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Par défaut Field 'Nom' doesn't have a default value
    Bonjour,
    Je suis actuellement confronté a un problème, et je n'arrive pas a le résoudre.
    J'ai une base hibernate avec a l'interieur une table etudiant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    REATE DATABASE Hibernate;
    USE Hibernate;
     
    CREATE TABLE Etudiant (
        Pseudo CHAR(10) NOT NULL,
        Nom CHAR(25) NOT NULL,
        Prenom CHAR(25) NOT NULL ,
    	Age int(2) NOT NULL,
    	PRIMARY KEY (Pseudo)
    );
    J'obtiens donc un fichier Etudiant.hbm.xml
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
     
    <hibernate-mapping package="Modele">
    	<class
    		name="Etudiant"
    		table="etudiant"
    	>
    		<meta attribute="sync-DAO">false</meta>
    		<id
    			name="Id"
    			type="string"
    			column="Pseudo"
    		>
    			<generator class="native"/>
    		</id>
     
     
    		<property
    			name="Pseudo"
    			column="Pseudo"
    			type="string"
    			not-null="true"
    			length="10"
    		/>
     
    		<property
    			name="Nom"
    			column="Nom"
    			type="string"
    			not-null="true"
    			length="25"
    		/>
    		<property
    			name="Prenom"
    			column="Prenom"
    			type="string"
    			not-null="true"
    			length="25"
    		/>
    		<property
    			name="Age"
    			column="Age"
    			type="integer"
    			not-null="true"
    			length="10"
    		/>
     
     
    	</class>	
    </hibernate-mapping>
    Mais lorsque je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Etudiant eleve = new Etudiant();
    		eleve.setNom("TestNom");
    		eleve.setPseudo("pseudo1");
    		eleve.setPrenom("TestPrenom");
    		eleve.setAge(new Integer(12));
    		session.save(eleve);
    J'obtiens l'erreur
    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
    juin 05, 2013 2:20:40 PM org.hibernate.cfg.Environment <clinit>
    INFO: Hibernate 3.3.1.GA
    juin 05, 2013 2:20:40 PM org.hibernate.cfg.Environment <clinit>
    INFO: hibernate.properties not found
    juin 05, 2013 2:20:40 PM org.hibernate.cfg.Environment buildBytecodeProvider
    INFO: Bytecode provider name : javassist
    juin 05, 2013 2:20:40 PM org.hibernate.cfg.Environment <clinit>
    INFO: using JDK 1.4 java.sql.Timestamp handling
    juin 05, 2013 2:20:40 PM org.hibernate.cfg.Configuration configure
    INFO: configuring from resource: /hibernate.cfg.xml
    juin 05, 2013 2:20:40 PM org.hibernate.cfg.Configuration getConfigurationInputStream
    INFO: Configuration resource: /hibernate.cfg.xml
    juin 05, 2013 2:20:40 PM org.hibernate.cfg.Configuration addResource
    INFO: Reading mappings from resource : Etudiant.hbm.xml
    juin 05, 2013 2:20:41 PM org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues
    INFO: Mapping class: Modele.Etudiant -> etudiant
    juin 05, 2013 2:20:41 PM org.hibernate.cfg.Configuration doConfigure
    INFO: Configured SessionFactory: null
    Initial SessionFactory creation failed.org.hibernate.MappingException: Repeated column in mapping for entity: Modele.Etudiant column: Pseudo (should be mapped with insert="false" update="false")
    Exception in thread "main" java.lang.ExceptionInInitializerError
    	at Modele.dao.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:19)
    	at Modele.dao.EtudiantDAO.main(EtudiantDAO.java:22)
    Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: Modele.Etudiant column: Pseudo (should be mapped with insert="false" update="false")
    	at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:670)
    	at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:692)
    	at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:714)
    	at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:468)
    	at org.hibernate.mapping.RootClass.validate(RootClass.java:215)
    	at org.hibernate.cfg.Configuration.validate(Configuration.java:1135)
    	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1320)
    	at Modele.dao.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:14)
    	... 1 more
    Ça fait plusieurs jours que je tourne en rond, quelqu'un peut il m'aider?!
    J'arrive a lire dans la base, mais pas a écrire dedans...

    Merci

  2. #2
    Membre chevronné Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Par défaut Eléments de réponse
    Salut,

    je ne comprend pas plusieurs trucs :

    -t'as un attribut nom dans ta base mais pas de nom dans tes properties

    -tu mets l'attribut nom en identifiant : j'aurais plutôt mit l'identifiant etudiant(IdEtudiant)

    -tu ne set pas ton nom => pour moi c'est d'ici que peut venir le problème puisque c'est ton identifiant.


    Tchao !

  3. #3
    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 : 45
    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
    Tu déclare que nom est une primary key, mais tu ne remplis pas le nom => erreur lors de l'insertion.

    Donne un nom.


    Et accessoirement, revois ton mapping parceque là, tu ne peux pas avoir deux étudiants avec le même nom de famille.....

  4. #4
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Par défaut
    J'ai édité mon message, car en effet certaines choses n'allaient pas.
    Du coup j'ai mis un Pseudo en clé primaire de ma table.

    De plus j'ai rajouté manuellement un property pseudo comme vous me l'avez conseillé, mais du coup j'obtiens un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Repeated column in mapping for entity
    Je pense pas qu'il y est de pseudo a mettre en property car celui ci doit être compris dans Id, de plus eclipse me le crée pas lorsque j'importe ma base...

    Merci

  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 : 45
    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
    ben si tu crée une property pseudo, faut créer la colonne qui va avec. Tu ne peux pas mapper deux propriété différente (exemple pseudo et id) sur la même colonne (exemple: NOM)

  6. #6
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    ben si tu crée une property pseudo, faut créer la colonne qui va avec. Tu ne peux pas mapper deux propriété différente (exemple pseudo et id) sur la même colonne (exemple: NOM)
    Oui mais mon Pseudo c'est mon Id, donc si je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<id name="Pseudo" type="string">
    		<column name="Pseudo" length="10" not-null="true"/>	
    		<generator class="native"/>
    		</id>
    Ça me permet d'avoir un id avec le nom pseudo mappé sur la colonne Pseudo.
    Donc ca devrait marcher mais j'obtiens un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Field 'Pseudo' doesn't have a default value

  7. #7
    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 : 45
    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
    même problème qu'avant, même solution. Fournis une valeur à pseudo avant de sauver!

  8. #8
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    même problème qu'avant, même solution. Fournis une valeur à pseudo avant de sauver!
    J'ai déjà fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eleve.setPseudo("pseudo1");
    mais ça ne marche pas.

  9. #9
    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 : 45
    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
    on peux voir le code complet? Ainsi que la ligne où a lieu l'erreur?

  10. #10
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Par défaut
    Je met en PJ l'ensemble des codes.
    Si j'enleve le je n'ai plus de probleme sauf que du coup ca n'insert pas dans la base

    J'arrive a lire dans ma table, mais pas a y insérer des données. Et dans le message d'erreur(mis précédemment), il me met pas où se trouve l'erreur...
    Fichiers attachés Fichiers attachés

  11. #11
    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 : 45
    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
    Normalement tu devrais avoir un stacktrace avec un message d'erreur complet (comme ton premier message).

    Aussi, je ne sais pas si ça a une influence, mais les noms des propriétés / champs devraient toujours commencer par une minuscule.

  12. #12
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Normalement tu devrais avoir un stacktrace avec un message d'erreur complet (comme ton premier message).

    Aussi, je ne sais pas si ça a une influence, mais les noms des propriétés / champs devraient toujours commencer par une minuscule.
    J'ai testé avec des minuscules et cela ne marche pas nom plus j'obtiens la meme erreur

Discussions similaires

  1. Recuperation de la Default Value d'une colonne
    Par mickeydisn dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/02/2007, 16h28
  2. default value: date + 3 mois en design view
    Par debdev dans le forum Access
    Réponses: 4
    Dernier message: 19/04/2006, 18h33
  3. [2.0][C#]Proprieté default value non assignée
    Par chnew dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/01/2006, 01h33
  4. Réponses: 2
    Dernier message: 16/10/2005, 00h55
  5. [PowerBuilder] Datawindow doesn't have UPDATE...
    Par marie mouse dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 23/05/2005, 11h38

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