Bonjour,
Avant tout, merci d'avance pour votre aide. Je suis des cours de systèmes distribués (client, serveur). Je préviens aussi que c'est mon premier sujet, donc il risque d'y avoir des modifications pour faire afficher un code correct esthétiquement.
J'étudie actuellement la persistance des objets avec Hibernate sous Eclipse, avec WildFly (version 14). Pour cela, j'ai créé sur PHPMyAdmin une base de données que j'ai appelée "cm30".
Cependant, une fois avoir mis à jour le fichier persistence.xml, et relancé WildFly, je suis censé obtenir la nouvelle table créée dans la classe "Etudiant".
Mais cette table ne s'affiche pas. Rien ne s'affiche, la base de données "cm30" n'a eu aucun changement, et reste vide.
Donc le problème vient bien de ce fichier persistence selon moi, car la BDD communique bien avec WildFly...
Voilà le code en question :
Code du fichier persistence.xml :
Et voilà le code de ma classe EtudiantEjbImpl :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="Projet" transaction-type="JTA"> <jta-data-source>java:/cm30</jta-data-source> <class>metier.entities.Etudiant</class> <properties> <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/> </properties> </persistence-unit> </persistence>
Et enfin le code de ma classe Etudiant :
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 package metier.entities; import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.PersistenceUnit; import javax.persistence.Query; @Stateless public class EtudiantEjbImpl implements EtudiantRemote, EtudiantLocal{ @PersistenceContext (unitName="Projet") //@PersistenceUnit(unitName="Projet") //Facultatif private EntityManager em; //déclaration d'un attribut Entity manager @Override public Etudiant addEtudiant(String nom, String prenom) { Etudiant e= new Etudiant(nom,prenom); em.persist(e); //Instruction permettant d'ajouter l'étudiant return e; } @Override public Etudiant getEtudiant(int numero) { Etudiant e=em.find(Etudiant.class,numero); if(e==null) throw new RuntimeException("Etudiant n'existe pas"); //Exception et pas de Syso car on est à distance return e; } @Override public List<Etudiant> listeEtudiants() { //hql Query req = em.createNamedQuery("select e from Etudiant"); //Ici on utilise le nom de la table par défaut, c'est a dire le nom de la classe return req.getResultList(); } }
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 package metier.entities; import java.io.Serializable; import java.lang.String; import javax.persistence.*; /** * Entity implementation class for Entity: Etudiant * */ @Entity @Table(name="personne") public class Etudiant implements Serializable { @Id //Clé primaire @GeneratedValue(strategy=GenerationType.IDENTITY) //Clé incrémenté de manière automatique. Grace à cette annotation. Le premier aura le numéro 1, le deuxieme 2 etc.. private int numero; private String nom; private String prenom; private static final long serialVersionUID = 1L; public Etudiant() { super(); } public Etudiant(String nom, String prenom) { this.nom=nom; this.prenom=prenom; } public int getNumero() { return this.numero; } public void setNumero(int numero) { this.numero = numero; } public String getNom() { return this.nom; } public void setNom(String nom) { this.nom = nom; } public String getPrenom() { return this.prenom; } public void setPrenom(String prenom) { this.prenom = prenom; } }
Partager