Bonjour,

je développe une application web avec dans la partie modèle des ejb.
mon problème réside dans le fait que si je fais un em.find(Poste.class, id)
j'arrive par le getter à récupérer le nom mais pas la collection d'éléments
quelqu'un aurait une idée

voici mon entity:
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
 
public class PosteDeTravail implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy= GenerationType.SEQUENCE, generator="posteTravail_seq")
    @SequenceGenerator(name="posteTravail_seq",sequenceName="poste_de_travail_code_machine_seq",allocationSize = 1)
    @Basic(optional = false)
    @Column(name = "code_machine")
    private Integer codeMachine;
    @Basic(optional = false)
    @Column(name = "nom_machine")
    private String nomMachine;
    @Column(name = "utilisateur")
    private String utilisateur;
    @Column(name = "administrateur")
    private String administrateur;
    @Column(name = "etat")
    private String etat;
    @Column(name = "remarque")
    private String remarque;
    @OneToMany(mappedBy = "machine")
    private Collection<Materiel> materielCollection;
//    @OneToMany(mappedBy = "nomMachine")
  //  private Collection<PriseSalle> priseSalleCollection;
    @JoinColumn(name = "prise", referencedColumnName = "id_prise")
    @ManyToOne
    private PriseSalle prise;
    @JoinColumn(name = "salle", referencedColumnName = "code_salle")
    @ManyToOne
    private Salle salle;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "machine")
    private Collection<PortCommutateur> portCommutateurCollection;
mon bean de session

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
 
  public Collection<PortCommutateur> getPortsByMachine(Integer idMachine)
    {
        PosteDeTravail poste = em.find(PosteDeTravail.class, idMachine);
        System.out.println("poste"+poste);
        System.out.println("poste.nom"+poste.getNomMachine());
        System.out.println("poste.materiel"+poste.getMaterielCollection().size());
        System.out.println("ports"+poste.getPortCommutateurCollection().size());
        poste.getPortCommutateurCollection().size();
        for(PortCommutateur port : poste.getPortCommutateurCollection())
        System.out.println("port"+port);
            return poste.getPortCommutateurCollection();
 
 
    }
une deuxième question que je me pose c'est quand on crée une entité avec comme attribut une collection doit-on faire le setCollection(collection)
ou il suffit de créer chacun des éléments

voici comment je procéde mais j'avoue que j'hésite pas mal et ai besoin d'explications

la création d'un poste de travail :

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
 
 public Integer creerCommutateur(String nom, Integer idsalle, Integer nbports, Integer portsgiga,Integer idmateriel)
    {
        Salle salle = em.find(Salle.class,idsalle);
        Materiel materiel = em.find(Materiel.class,idmateriel);
 
        Collection<Materiel> colmateriel = new ArrayList<Materiel>();
        PosteDeTravail postetravail = new PosteDeTravail(nom, salle, "null", "service informatique");
        postetravail.setMaterielCollection(colmateriel);
        postetravail.setEtat("en service");
        em.persist(postetravail);
        materiel.setMachine(postetravail);
        materiel.setEtatMateriel("en service");
        em.persist(materiel);
        em.flush();
        System.out.println("postetravail"+postetravail.getCodeMachine());
        for(Integer i=1;i<=nbports;i++){
            portCommutateurBean.addPort("P"+i, "megabit", postetravail);
        }
          for(Integer i=1;i<=portsgiga;i++){
            portCommutateurBean.addPort("G"+i, "gigabit", postetravail);
        }
         em.refresh(postetravail);
        System.out.println("poste+ports"+postetravail.getPortCommutateurCollection());
        if(postetravail.getPortCommutateurCollection()!=null)
        System.out.println("postes+taille ports"+postetravail.getPortCommutateurCollection().size());
 
 
 
        return postetravail.getCodeMachine();
 
    }