Précédent   Forum des professionnels en informatique > Java > Général Java > Persistance > JPA
JPA Forum d'entraide sur l'API de persistance JPA (Java Persistence API)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/01/2012, 01h29   #1
Nouveau Membre du Club
 
Homme Omar Belghiti Alaoui
Étudiant
Inscription : octobre 2010
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Omar Belghiti Alaoui
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 100
Points : 36
Points : 36
Par défaut JPA me met une liste null ?

Bonjour,

voici mon code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Ecole ecole = new Ecole();
ecole.setNomEcole("Nom prop");
ecole.setAdresse("prop adress");
Etudiant etudiant = new Etudiant();
etudiant.setNumEtudiant(1);
etudiant.setNomEtudiant("Ahmed");
etudiant.setEcole(ecole);
//Le probléme provien de cette ligne il me dit que la liste est null
ecole.getEtudiants().add(ecole);
em.persist(ecole);
em.getTransaction().commit();
em.close();
emf.close();
Je comprend pas pourquoi il me met le null dans la ligne :
Code :
1
2
//Le probléme provien de cette ligne il me dit que la liste est null
ecole.getEtudiants().add(ecole);
ce que j'ai remarqué c'est que si les donnés sont dans la base il les charge donc ya pas de soucis mais si il y sont pas il crée l'objet mes la List reste null

que puis-je faire

Merci
newbe-deve est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 09h00   #2
Expert Confirmé
 
Homme
Inscription : septembre 2006
Messages : 2 291
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2006
Messages : 2 291
Points : 2 738
Points : 2 738
c'est que votre classe n'initialise pas sa propriété
Code :
List<Etudiant> etudiants
à une liste vide.
JeitEmgie est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/01/2012, 09h17   #3
Expert Confirmé
 
Homme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 2 258
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 2 258
Points : 2 578
Points : 2 578
Peut on voir le code de ta classe Ecole?
DevServlet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 15h01   #4
Nouveau Membre du Club
 
Homme Omar Belghiti Alaoui
Étudiant
Inscription : octobre 2010
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Omar Belghiti Alaoui
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 100
Points : 36
Points : 36
voici le code vous avez raison je devez initialisé les Lists
Code :
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 
package com.jpa.entitie;
 
import java.io.Serializable;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
 
 
/**
 * The persistent class for the Ecole database table.
 * 
 */
@Entity
public class Ecole implements Serializable {
	private static final long serialVersionUID = 1L;
	private int idEcole;
	private String adresse;
	private String nomEcole;
	private List<Etudiant> etudiants;//= new ArrayList<Etudiant>();
 
    public Ecole() {
    }
 
 
	@Id
	@GeneratedValue(strategy=GenerationType.TABLE)
	@Column(name="ID_Ecole")
	public int getIdEcole() {
		return this.idEcole;
	}
 
	public void setIdEcole(int idEcole) {
		this.idEcole = idEcole;
	}
 
 
    @Lob()
	public String getAdresse() {
		return this.adresse;
	}
 
	public void setAdresse(String adresse) {
		this.adresse = adresse;
	}
 
 
    @Lob()
	@Column(name="NOM_Ecole")
	public String getNomEcole() {
		return this.nomEcole;
	}
 
	public void setNomEcole(String nomEcole) {
		this.nomEcole = nomEcole;
	}
 
 
	//bi-directional many-to-one association to Etudiant
	@OneToMany(mappedBy="ecole",cascade=CascadeType.ALL,fetch=FetchType.LAZY)
	public List<Etudiant> getEtudiants() {
		return this.etudiants;
	}
 
	public void setEtudiants(List<Etudiant> etudiants) {
		this.etudiants = etudiants;
	}
 
}
Mais j'ai une question si dans mon traitement je fais en utilisant JPQL la vérifications si l’ecole existe où pas et je le récupéré il va me récupéré la liste des étudiant qui va avec où pas ?

pour que après je parcoure la liste pour voir si l’étudiant existe si oui je modifie l'objet de la liste si non je vérifie si il existe dans la base si oui je fais la même chose si non je le crée

j'ai fais ça avec une getSingleResult() je catche l’exécution de la requête si elle s'exécute je fais la récupération et les modification si non je récupére l'erreur et je fais
Code :
1
2
3
4
5
6
 
if(e.getMessage().contains("did not retrieve any entities")){
Je crée une nouveau objet que j'ai déclarer avant le try
}else{
Je met qu'il ya une erreur et je met une variable boolean a true que je verifie aprés avant de continuer mon traitement
}
Que pensez vous de cela, est-ce que il y a une méthode plus saine que ça ?
Merci
newbe-deve est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h19.


 
 
 
 
Partenaires

Hébergement Web