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

Java EE Discussion :

Problème d'écriture en base de données


Sujet :

Java EE

  1. #1
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut Problème d'écriture en base de données
    Bonjour.

    Je fais une appli web en JEE en utilisant Hibernate pour la persistance des données.

    En simplifiant les chose, j'ai une classe "Users" :
    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
    @Entity@Table(name = "users", catalog = "expense_report")
    public class Users implements java.io.Serializable {
     
     
    	private int idUser;
    	private String userName;
    	private String userFirstName;
    	private String userEmail;
    	private Boolean userIsactif;
    	private Integer userInternalId;
    	private String userCarName;
    	private String userPhone;
    	private String passWord;
    	private Coefficients coeffocient;
    	private Fonctions fonction;
     
    	// Constructeur, Getter, Setter
    et une classe "Fonction" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @Entity@Table(name = "fonctions", catalog = "expense_report")
    public class Fonctions implements java.io.Serializable {
     
     
    	private int idFonction;
    	private String fonctionName;
    	private Set<Users> users;
     
    	// Constructeur, Getter, Setter

    J'ai donc bien sur deux tables en base de données pour ces deux classes.

    Dans ma table "Users", j'ai un FK qui correspond à la PK de la table fonction.

    Normalement, jusque la tout est OK.

    Bien sur, j'ai un formulaire dans lequel j'ajoute un utilisateur à mon application.
    Et le problème, est ici.

    Pour attribuer une "Fonction" à mon "User", j'utilise une <select> (logique).
    Quand je submit mon formulaire, toutes les infos sont bien remonté dans ma classe d'action mais la fonction de l'utilisateur n'est pas renseignée.

    Mon HTML (j'utilise Struts2)
    Code HTML : 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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    				<form method="POST" action="AddUser">					<div class="form_user col-md-12">
    						<div class="col-md-6">
    						  <div class="form-group">
    						    <label for="userInternalId">Matricule</label>
    						    <input type="number" class="form-control" id="userInternalId" name="user.userInternalId" placeholder="Matricule">
    						  </div>
     
     
    						  <div class="form-group">
    						    <label for="userFonction">Fonction</label>
     
     
    						    <s:if test="%{ fonctions == null }">
    							    <select class="form-control" id="selectFonction">
    									<option>Veuillez créer des fonctions utilisateur</option>
    							    </select>
    						    </s:if>
    						    <s:else>
    						    	<s:select class = "form-control" id = "fonctions" list = "fonctions" listKey = "idFunction" listValue="fonctionName" headerKey="-1" headerValue="Selectionnez la fonction de l'utilisateur" name="fonction.idFonction"></s:select>
    						    </s:else>
     
     
    						  </div>
     
     
    						  <div class="form-group">
    						    <label for="userName">Nom</label>
    						    <input type="text" class="form-control" id="userName" name="user.userName" placeholder="Nom">
    						  </div>
    						  <div class="form-group">
    						    <label for="userFirstName">Prénom</label>
    						    <input type="text" class="form-control" id="userFirstName" name="user.userFirstName" placeholder="Prénom">
    						  </div>
    						  <div class="form-group">
    						    <label for="userEmail">Adresse e-mail</label>
    						    <input type="email" class="form-control" id="userEmail" name="user.userEmail" aria-describedby="emailHelp" placeholder="e-mail">
    						  </div>
    						  <div class="form-group">
    						    <label for="userPhone">Téléphone</label>
    						    <input type="text" class="form-control" id="userPhone" name="user.userPhone" placeholder="Téléphone">
    						  </div>
    						</div>
    						<div class="col-md-6">
    						  <div class="form-group">
    						    <label for="userCarName">Véhicule utilisé</label>
    						    <input type="text" class="form-control" id="userCarName" name="user.userCarName" placeholder="Véhicule utilisé">
    						  </div>
    						  <div class="form-group">
    						    <label for="userPowerCar">Nombre de chevaux fiscaux</label>
     
     
    						    <s:if test="%{ coefficients == null }">
    							    <select class="form-control" id="exampleFormControlSelect1">
    									<option>Pas de résultat</option>
    							    </select>
    						    </s:if>
    						    <s:else>
    						    	<s:select class = "form-control" id = "coefficients" list = "coefficients" listKey = "idCoefficient" listValue="titleCoefficient" headerKey="-1" headerValue="Selectionnez le type de véhicule" name="coefficient.idCoefficient"></s:select>
    						    </s:else>
    						  </div>
     
     
    						  <div class="form-group">
    						    <label for="userKmsPrice">Prix au kilométre</label>
    						    <input type="text" class="form-control" id="userKmsPrice" placeholder="Prix au kilométre" readonly="readonly">
    						  </div>
     
     
    						  <div class="form-group">
    						    <label for="userMdp">Mot de passe</label>
    						    <input type="password" class="form-control" id="mdp" name="user.passWord" placeholder="Mot de passe">
    						  </div>
    						  <div class="form-group">
    						    <label for="userConfirmMdp">Confirmation du mot de passe</label>
    						    <input type="password" class="form-control" id="confirmMdp" placeholder="Confirmation du mot de passe">
    						  </div>
    						</div>
    					</div>
    				  	<button type="submit" class="btn btn-primary">Sauvegarder</button>
    				</form>

    Ma méthode dans ma classe d'action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	public String RegisterUser() throws Exception {		DAO<Users> userDao = DAOFactory.getUsersDao();
    		DAO<Fonctions> funcDao = DAOFactory.getFonctionsDao();
    		DAO<Coefficients> coefDao = DAOFactory.getCoefficientsDao();
    		Fonctions func = funcDao.find(fonction.getIdFonction());
    		Coefficients coeff = coefDao.find(coefficient.getIdCoefficient());
    		System.err.println("Fonction :  " + func.getFonctionName()); // affichage en console pour voir info bien remontée
    		user.setFunction(func);
    		user.setCoeffocient(coeff);
    		user.setUserIsactif(true);
    		System.err.println("Fonction :  " + user.getFonction().getFonctionName()); // affichage en console pour voir info bien attribuée à mon utilisateur
    		userDao.create(user); // Enregistrement en base de mon utilisateur
    		return SUCCESS;
    	}
    Dans ma base, tout est nikel sauf les FK (il y en a deux : "idFonction" et "idCoefficient") qui correspondent aux liste déroulante des tables "fonction" et "coefficient" des classes correspondante.

    Je sais pas si je me suis bien expliqué donc, n'hésitez pas à demander plus de précision et explications.


    Merci d'avance pour votre aide (je suis sur que c'est un truc tout con que j'ai zappé de faire ^^).

  2. #2
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Bon beh en recherchant un peut plus dans mon code, j'ai trouvé la solution

    Simplement, j’avais mal mis certaines annotations Hibernate dans les classes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        @ManyToOne
        @JoinColumn(name = "id_user_function", insertable = false, updatable = false)
        public Functions getFunction() {
            return function;
        }
    faut mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        @ManyToOne
        @JoinColumn(name = "id_user_function")
        public Functions getFunction() {
            return function;
        }
    Plus quelques modif du fichier "hibernate.cfg.xml".


    Merci à ceux qui on jeter un œil.

  3. #3
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut,
    merci pour ta reponse, n´oublies pas de mettre resolu.

    Eric

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/12/2008, 01h32
  2. [ACCESS] - Problème d'ouverture de base de données...
    Par fredhali2000 dans le forum Access
    Réponses: 21
    Dernier message: 21/02/2006, 10h10
  3. [MySQL] Un problème d'appel de base de donnée!
    Par dp33 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 05/02/2006, 21h54
  4. [phpMyAdmin] problème pour exporter ma base de données
    Par Chezbebsi dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 04/12/2005, 11h58
  5. Problème de sauvegarde de bases de données
    Par Gwipi dans le forum Administration
    Réponses: 2
    Dernier message: 09/09/2005, 08h30

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