Slt les amis, je veux savoir s'il ya qlq1 qui a déja fait un update avec les methodes jenerées par hibernate(les methodes comme: le save, le delete qui se genere automatiquement par hibernate) sur struts,jutilise hibernate 3.1,
Slt les amis, je veux savoir s'il ya qlq1 qui a déja fait un update avec les methodes jenerées par hibernate(les methodes comme: le save, le delete qui se genere automatiquement par hibernate) sur struts,jutilise hibernate 3.1,
oui je l'ai deja fait (avec les méthodes hibernate générées avec MyEclipse).
Pourquoi? plus de précision pour que je puise t'aider.
En fait le code que je viens de citer me plait pas car ce qu'il fait c'est juste il recherche dans BD du donnée à modifier, il le charge, tu apporte ta modification sur cet objet et par suite tu fais le commit et oups ça se modifit!!!!
Oui mais quel est le code et que veus tu faire ?
je sais pas car si je le savais j'aurais pas du le demander.
Donnes moi ce que t'as fais toi pour la modification,si tu veux biensur.
Moi mon code marche hyperbien mais je me suis dis si il y'a un code plus optimisé pouquoi pas!!!!
Candidat est une classe mapper avec une tanble CANDIDAT, il faut remplir tout les champs. ici je l'ai fait avec get... provenant de inputtext à remplir
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 Candidat candidat = new Candidat(); candidat.setLogin(getLogin()); candidat.setPassword(getPassword()); candidat.setPasswordconfirme(getPasswordconfirme()); candidat.setEmail(getEmail()); candidat.setConfirme("non"); candidat.setNom(getNom()); candidat.setPrenom(getPrenom()); candidat.setSex(getSex()); candidat.setAge(getAge()); candidat.setProfession(getProfession()); candidat.setDepartement(getDepartement()); try{ CandidatDAO dao = new CandidatDAO(); Transaction tx = dao.getSession().beginTransaction(); dao.save(candidat); tx.commit(); dao.getSession().close();
Voila expérant avoir répondue à ton message
Mais ce code sert pour l'insertion et non pas pour la modification!!!!
en fait j'ai une remarque sur ton code:
vaut mieu mettre le comit dans la classe DAO generer com ainsi que le try com ca t'auras pas obligé à le mettre chaque fois que tu veux faire de l'ajout
C'est casiment pareil pour la modif.ici je modify le tuple ayant emailconfirmant
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 CandidatDAO dao = new CandidatDAO(); List candidatconfirme = dao.findByEmail(emailconfirmant); if (candidatconfirme.size()!=0) { Candidat candidat = (Candidat) candidatconfirme.get(0); candidat.setLogin(candidat.getLogin()); candidat.setPassword(candidat.getPassword()); candidat.setPasswordconfirme(candidat.getPasswordconfirme()); candidat.setEmail(candidat.getEmail()); candidat.setConfirme("oui"); candidat.setNom(candidat.getNom()); candidat.setPrenom(candidat.getPrenom()); candidat.setSex(candidat.getSex()); candidat.setAge(candidat.getAge()); candidat.setProfession(candidat.getProfession()); candidat.setDepartement(candidat.getDepartement()); Transaction tx = dao.getSession().beginTransaction(); dao.save(candidat); tx.commit(); dao.getSession().close();
Non c'est pas la meme chose car dans mon cas j'ai une clé "auto-increment" donc je ferais ce code yaurais pas de modificattion mais l'ajout d'un nouveau enregistrement.
toi ce que tu fais c'est ecrasé un enregistrement par le nouveau et ceci c'est pas unee modification.
Tu vois ce que je voulais dire?
Euh... ici il s'agit bien d'une modif ...
Mais soit je comprends rien, soit toutes les lignes du genre
ne servent strictement à rien ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 candidat.setLogin(candidat.getLogin());
CTO@UniqueSound. http://www.uniquesound.com
Moi je fais comme ca, Si le Query ne donne rien car la table Candidat est vide, il y a une exception, alors je met que l'id clée primare prend la valeur 1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 try { Query q=HibernateSessionFactory.getSession().createSQLQuery("select max(idcandidat) from Candidat"); ;candidat.setIdcandidat(( (Integer) q.list().get(0))+Integer.valueOf(1)); } catch (Exception e) {candidat.setIdcandidat(Integer.valueOf(1));}
Si la table Candidat n'est pas vide, le Query donne le maximum de la clée Idcandidat auquel je rajoute 1.
oui c'est une modif mais comme je suis maniaque je met les candidat.set qui ne servent à rien en effet.
ca marche pour toi car t'as le idcondidat com clé de ta table si la clé etait auto-increment...
Ben moi j'utilise mysql5. Et il y a une polémique sur le forum. certains disent qu'avec mysql on ne peut pas auto increment un attribut, d'autre disent que oui. Voila si tu utilise Mysql. Moi je sais pas alors je gere tout seul l'incrémentation et ca marche. Pas de doublon ect...
essais http://www.anewhope.eu
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager