Salut,
j'ai deux entity, etudiant et college, un college contient 1 ou plusieurs etudiants
je veux modifier les deux entity ensemble, je fais dataGrid pour affiche touts les college, lorsque cliquer sur le college, il m'affiche dailog conteint le nom de college et les information de touts les etudiantes qui appartient à ce college, avec une bouton pour modifier ces informations
j'ai créé la methode modification de l'etudiant et college, mais lorsque je cliquez sur le bouton la methode update qui est dans la bean ne fonctionne pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
@Entity
public class College implements java.io.Serializable {
 
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "ID")
    @SequenceGenerator(name = "ID", sequenceName = "ID_SQ")
    private int id_c;
    private String nom_c;
 
    @OneToMany(targetEntity = Etudiant.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "college")
    private List<Etudiant> etudiants;
...
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
 
Entity
public class Etudiant implements java.io.Serializable {
 
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "ID")
    @SequenceGenerator(name = "ID", sequenceName = "ID_SQ")
    private int id;
    private String nom;
    private String prenom;
    private int age;
 
    @ManyToOne(cascade = CascadeType.PERSIST)
    @JoinColumn(name = "FK_COLLEGE")
    private College college;
...
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
 
public class ImplEtudiant implements IEtudiant {
 
    @Override
    public Boolean modifierEtudiant(Etudiant etd) {
        try {
            Session session = HibernateUtil.getSessionFactory().openSession();
            Transaction tx = session.beginTransaction();
            session.update(etd);
            tx.commit();
            session.close();
            return true;
        } catch (Exception e) {
            return false;
        }
    }
 
    @Override
    public Boolean modifierCollege(College col) {
        try {
            Session session = HibernateUtil.getSessionFactory().openSession();
            Transaction tx = session.beginTransaction();
            session.update(col);
            tx.commit();
            session.close();
            return true;
        } catch (Exception e) {
            return false;
        }
    }
 
    @Override
    public List<College> list1() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        List<College> listQQ = session.createQuery("from College qq").list();
        session.close();
        return listQQ;
    }
 
    @Override
    public List<Etudiant> listEtudiantCond(Integer a) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        List<Etudiant> listRQ = session.createQuery("select r from Etudiant r where r.college.id_c = :search").setParameter("search", a).list();
        session.close();
        return listRQ;
    }
 
}

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
 
@ManagedBean
@ViewScoped
public class Bean {
 
    private IEtudiant dao;
    private Etudiant etudiant;
    private College college;
    private List<Etudiant> etudiantsC;
    private List<College> colleges;
 
    @PostConstruct
    public void init() {
        dao = new ImplEtudiant();
        etudiant = new Etudiant();
        college = new College();
        etudiantsC = new ArrayList<Etudiant>();
        colleges = dao.list1();
    }
 
    public void update() {
        dao = new ImplEtudiant();
        dao.modifierEtudiant(etudiant);
        dao.modifierCollege(college);
    }
 
    public List<Etudiant> getEtudiantsC(Integer a) {
        dao = new ImplEtudiant();
        etudiantsC = dao.listEtudiantCond(a);
        return etudiantsC;
    }
....

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
 
        <h:form id="form">
 
            <p:dataGrid var="car" value="#{bean.colleges}" layout="grid">
                <p:panel header="College #{car.id_c}:" style="text-align:center">
                    <h:outputText value="#{car.nom_c}" /><br/>
                    <p:commandButton icon="ui-icon-pencil" title="Modifier" update=":form:Detail"
                                     oncomplete="PF('modf').show()">
                        <f:setPropertyActionListener value="#{car}" target="#{bean.college}" />
                    </p:commandButton>
                </p:panel>
            </p:dataGrid>
 
 
 
            <p:dialog header="Modifier Question" widgetVar="modf" appendTo="@(body)">
                <p:outputPanel id="Detail" style="text-align:center;">
                    <h:panelGrid columns="2">
                        <h:outputText value="Nom College:" />
                        <h:inputText value="#{bean.college.nom_c}"/>
                    </h:panelGrid>
                    <p:separator/>
                    <h:panelGrid id="alvs">
                        <ui:repeat id="rep" value="#{bean.getEtudiantsC(bean.college.id_c)}" var="value">
                            <p:panelGrid columns="2">
                                <h:outputLabel value="Nom:"/>
                                <p:inputTextarea value="#{value.nom}" />
                                <h:outputLabel value="Prenom:"/>
                                <p:inputText value="#{value.prenom}"/> 
                                <h:outputLabel value="Age:"/>
                                <p:inputText value="#{value.age}"/>
                            </p:panelGrid>
                        </ui:repeat> 
                    </h:panelGrid>
                    <p:separator/>
                    <p:commandButton value="Update" actionListener="#{bean.update()}" />
                </p:outputPanel>
            </p:dialog>
 
        </h:form>