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 :

probleme de mapping id 'assigned'


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut probleme de mapping id 'assigned'
    Bonjour,
    je commence avec Hibernate. Je suis en train de le tester avec Eclipse 3.2, hibernate 3, et une base MySQL5.

    Je n'arrive pas a avoir un mapping de mon objet JAVA correct, j'ai tout le temps l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): net.yozine.Utilisateur
    ma classe net.yozine.Utilisateur:
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    package net.yozine;
     
    import java.io.Serializable;
     
    public class Utilisateur implements Serializable {
     
        private Long id;
    	private String email;
    	private String nom;
    	private String prenom;
    	private Adresse adresse = new Adresse();
    	private String telDom;
    	private String telPort;
     
    	public Utilisateur() {}   // constructeur sans arguments
     
        public Long getId() {
            return id;
        }
     
        private void setId(Long id) {   // permet a hibernate d'initialiser l'id
            this.id = id;
        }
     
    	public Adresse getAdresse() {
    		return adresse;
    	}
    	public void setAdresse(Adresse adresse) {
    		this.adresse = adresse;
    	}
    	public String getEmail() {
    		return email;
    	}
    	public void setEmail(String email) {
    		this.email = email;
    	}
    	public String getNom() {
    		return nom;
    	}
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
    	public String getPrenom() {
    		return prenom;
    	}
    	public void setPrenom(String prenom) {
    		this.prenom = prenom;
    	}
    	public String getTelDom() {
    		return telDom;
    	}
    	public void setTelDom(String telDom) {
    		this.telDom = telDom;
    	}
    	public String getTelPort() {
    		return telPort;
    	}
    	public void setTelPort(String telPort) {
    		this.telPort = telPort;
    	}
     
    }
    le code de géneration de ma tableMySQL5:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE `utilisateur` (
      `email` varchar(30) NOT NULL,
      `nom` varchar(30) NOT NULL,
      `prenom` varchar(30) NOT NULL,
      `cp` varchar(5) default NULL,
      `teldom` varchar(10) default NULL,
      `telport` varchar(10) default NULL,
      `rue` varchar(50) default NULL,
      `ville` varchar(30) default NULL,
      PRIMARY KEY  (`email`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    et enfin mon fichier de mapping:
    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
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
      <class name="net.yozine.Utilisateur" table="`utilisateur`" >
     
            <id name="email" type="string" column="`email`" >
            	<generator class="assigned" />
            </id>
     
      	<property name="nom" />
      	<property name="prenom" />
      	<property name="telDom" column="teldom" />
      	<property name="telPort" column="telport" />
      	<component name="adresse" class="net.yozine.Adresse">
      		<property name="rue" />
      		<property name="cp" />
      		<property name="ville" />
      	</component>
      </class>
    </hibernate-mapping>
    Merci, de votre aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2007
    Messages : 71
    Par défaut
    Bonjour,

    le fait que tu mettes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <id name="email" type="string" column="`email`" >
         <generator class="assigned" />
    </id>
    signifie que tu dois préciser toi même l'identifiant de ton utilisateur (ici l'email). Autrement dit, il faut que tu fasses un monUtilisateur.setEmail() avant d'enregistrer monUtilisateur en base de données.

    MiniMarch

  3. #3
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    en fait j'utilise STRUTS pour l'architecture du formulaire. Donc j'ai une servlet d'action qui recupere les valeurs saisies dans un formulaire jsp, et qui les copie dans le bean 'Utilisateur'.. Donc a priori le setEmail() devrait etre effectué a ce moment.

    Le code de la classe d'action STRUTS:
    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
    54
    55
    56
    57
    58
    59
    package net.yozine.action;
     
    import java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
    import java.util.List;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.ServletException;
     
    import net.yozine.Utilisateur;
    import net.yozine.dao.HibernateDAOFactory;
    import net.yozine.form.HiberTestForm;
    import net.yozine.interfaces.UtilisateurDAO;
     
    import org.apache.commons.beanutils.BeanUtils;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
    public class HiberAction extends Action {
     
    public ActionForward execute(ActionMapping mapping,
    								ActionForm form, 
    								HttpServletRequest request, 
    								HttpServletResponse response)
    								throws IOException, ServletException, 
    								IllegalAccessException, InvocationTargetException {
     
     
    		HibernateDAOFactory myFactory;
    		myFactory = new HibernateDAOFactory();
    		UtilisateurDAO user = myFactory.getUtilisateurDAO();
     
    		// Ajoute l'utilisateur dans la base
    		// necessite l'emploi d'un formBean
     
    		HiberTestForm myForm = (HiberTestForm) form;
    		Utilisateur myUser = new Utilisateur();
    		BeanUtils.copyProperties(myUser, myForm);
     
    		user.insertUtilisateurDAO(myUser);
     
    		// Liste les utilisateurs existants
     
    		List userList = user.listUtilisateurDAO();
     
    		Utilisateur[] users = new Utilisateur[userList.size()];		
    		for (int i=0; i < userList.size(); i++) {
    			users[i] = (Utilisateur) userList.get(i);
    		}
     
    		request.getSession().setAttribute("dao", users);
     
    		String target = "success";
    		return mapping.findForward(target);
    	}
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2007
    Messages : 71
    Par défaut
    A chaque fois que j'ai eu un problème de ce genre, et que je me suis dit "a priori", je l'ai eu dans l'os...

    Essaye de voir si la valeur est effectivement passée (une erreur de frappe qui empêche le binding, ça va vite...).

    Au hasard, je dirais System.out.println(myUser.getEmail) juste avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    user.insertUtilisateurDAO(myUser);

  5. #5
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    C'est exactement ce que je suis en train de faire, un bon vieux system.out.print()

  6. #6
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    bien vu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("******** val de email: "+ myUser.getEmail() +" *********");
    m'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ******** val de email: null *********
    je vais etudier ca de plus pres apres manger, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/07/2006, 14h45
  2. [Hibernate] Problème de mapping ?
    Par n@n¤u dans le forum Hibernate
    Réponses: 3
    Dernier message: 13/06/2006, 08h45
  3. Problem de Map et de List
    Par Roming22 dans le forum C++
    Réponses: 5
    Dernier message: 29/05/2006, 11h29
  4. [hibernate] probleme de mapping un-vers-plusieurs
    Par Elmilouse dans le forum Hibernate
    Réponses: 2
    Dernier message: 12/04/2006, 13h37
  5. Un petit probleme de map()
    Par cryptorchild dans le forum Langage
    Réponses: 2
    Dernier message: 04/12/2005, 13h00

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