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 :
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 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
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();
    }
 
}
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
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;
    }
 
}