[J2EE] Sauvegarder avec "save"

amirah Messages postés 36 Statut Membre -  
Marco la baraque Messages postés 1030 Statut Contributeur -
Bonjour,
je suis entrain de travailler avec j2EE pour la premiére fois . j'utilise eclipse. j'ai téléchargé tous les plugins nécessaires . ma premiére application consite seulement à inserer des donées mais je trouve toujours un probléme avec sauvgarde exactement la methode save.
A voir également:

5 réponses

Marco la baraque Messages postés 1030 Statut Contributeur 329
 
Bonsoir,
Qu'entends tu exactement par J2EE ?
Utilises-tu des frameworks particuliers pour faire ta persistance, ou utilises-tu la JPA ?
Quelle est ta base de données ?

Et puis une dernière question pour la route (parce que j'ai une petite idée de la réponse à ton problème) : si tu fais un select ça marche je suppose ?

Cordialement.
0
amirah Messages postés 36 Statut Membre 1
 
oui select marche correctement mais le probléme si il y a insertion le probleme exactement c'est au sauvgarde de ces insertion
0
amirah Messages postés 36 Statut Membre 1
 
la base contient un table dept où je veux inserer un ligne le table ne contient que primary key et nom

voilà c'est le code de l'insertion :
import org.hibernate.*;
import com.tutorailbd.Dept;
import com.util.HibernateUtil;

public class testInsert {

public static void main(String[] args)
throws HibernateException {

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();

Dept d1 = new Dept();
d1.setNomDept("informatique");
session.save(d1);

session.getTransaction().commit();
HibernateUtil.getSessionFactory().close();
}
}


et voilà les erreurs:

Exception in thread "main" org.hibernate.MappingException: Unknown entity: com.tutorailbd.Dept
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:550)
at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1338)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:98)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
at $Proxy0.save(Unknown Source)
at testInsert.main(testInsert.java:15)

Si j'enleve l'instruction session.save() il n'y a plus ces erreurs mais aussi il n'y a pas le ligne que je le déjà ajouter
Mercie pour votre aide .
0
Marco la baraque Messages postés 1030 Statut Contributeur 329
 
Ok,
Quand tu fais de la persistance de données, en général tu as le process suivant à suivre :
- tu crées ta connexion (en spécifiant le driver jdbc)
- tu crées un statement depuis cette connexion
- tu fais un executeQuery, ou un save, ou un update, ou un delete...
- tu récupère un resultSet si tu attends un résultat, et tu traites les données
- tu fermes ton statement
- tu fermes ta connexion

Je pense que dans ton cas, ton statement n'est pas fermé, ce qui fait que tes transactions ne sont jamais commitées dans la base.

Cordialement.
0
amirah Messages postés 36 Statut Membre 1
 
je n'ai pas écrit ce code je n'ai qu'une débutente j'ai trouver ce projet dans le site de devoloppez.com et j'ai suivie les étapes. SVP si il y a correction à faire dis mois parce que tou est bloqué chez mois à cause de ce probléme.MErcie
0
Marco la baraque Messages postés 1030 Statut Contributeur 329
 
Ah, tu utilises hibernate!
Et en plus tu as des exceptions de levées, donc ça va nous aider.
Unknown entity: com.tutorailbd.Dept
Hibernate nous dit qu'il ne connait pas le bean que tu essaies de persister. Autrement dit, tu ne lui as pas renseigné dans le fichier de configuration.

Dans hibernate.cfg.xml, tu peux rajouter :
<mapping class="com.tutorailbd.Dept"/>

Cordialement
0
amirah Messages postés 36 Statut Membre 1
 
je l'ai ajouté mais c'est un autre probléme apparut:
Initial SessionFactory creation failed.org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="com.tutorailbd.Dept"/>
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.util.HibernateUtil.<clinit>(HibernateUtil.java:16)
at testInsert.main(testInsert.java:10)
Caused by: org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="com.tutorailbd.Dept"/>
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1606)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1561)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1540)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1514)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1434)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1420)
at com.util.HibernateUtil.<clinit>(HibernateUtil.java:12)
... 1 more
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Marco la baraque Messages postés 1030 Statut Contributeur 329
 
Re,
Tu dois avoir un bean de ce type:
package com.tutorailbd;

import... //tout ce qu'il faut importer, le Ctrl+Shift+o est ton ami

@Entity
@Table (name = "dept")
public Class Dept {
 private Integer id;
 private String nomDept;

 public Dept() {
 }

 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 public Integer getId() {
  return this.id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public String getNomDept() {
  return this.nomDept;
 }

 public void setNomDept(String nomDept) {
  this.nomDept = nomDept;
 }
}


Je pense qu'il te manque les annotations id/generatedValue et/ou entity.
0