[J2EE] Sauvegarder avec "save"
amirah
Messages postés
36
Statut
Membre
-
Marco la baraque Messages postés 1030 Statut Contributeur -
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.
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:
- [J2EE] Sauvegarder avec "save"
- Save as pdf office 2007 - Télécharger - Bureautique
- Save tube - Télécharger - Téléchargement & Transfert
- Sauvegarder favoris chrome - Guide
- Sauvegarder sms iphone - Guide
- Sauvegarder favoris firefox - Guide
5 réponses
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.
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.
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.
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.
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
Tu dois avoir un bean de ce type:
Je pense qu'il te manque les annotations id/generatedValue et/ou entity.
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.
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 .