Bonjour,

En fait ma question est simple, j'ai un entity bean "Icsr" et un dao "IcsrDao" et j'aimerais exécuter une méthode dès qu'un record est rajouté dans la DB faisant référence à l'entity Icsr. J'ai lu des choses sur les callback et les listener mais n'ai pas compris comment faire.

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
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
package com.icsr.entity;
 
import java.io.Serializable;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SecondaryTable;
import javax.persistence.Table;
 
@Entity
@Table(name="ICSR_CURRENT", schema="ICSR")
@SecondaryTable(name="ICSR_LOCKING")
public class Icsr implements Serializable
{
    public static final int LOCKED = 0;
    public static final int UNLOCKED = 1;
 
    @Id
    @Column(name="ICSR_CURRENT_NO")
    private int icsrNumber;
    @OneToMany
    private List<Tracking> trackings;
    @Column(name="TRACKING_DATETIME")
    private String trackingDateTime;
    @ManyToOne
    @JoinColumn(name="USER_NO")
    private User lastUser;
    @Column(name="CT_ICSR_NR")
    private String empiricaNumber;
    @Column(name="CT_ICSR_LRD")
    private String empiricaDate;
    @Column(name="CT_ICSR_TYPE")
    private int empiricaICSRType;
    @JoinColumn(name="STAGE_NO")
    @ManyToOne
    private Stage stage;
    @Column(name="ERR_STATUS")
    private int errorStatus;
    @Column(name="ERR_TRACKING_NO")
    private int errorTrackingNumber;
    @Column(name="APP_TRACKING_NO")
    private int approvalTrackingNumber;
    @Column(name="RECEIVER_NO")
    private String receiverNumber;
    @Column(name="FILENAME")
    private String fileName;
    @Column(name="GATEWAY_TYPE")
    private int gatewayType;
    @Column(name="SENDER_NO")
    private String senderNumber;
    @Column(name="FILE_ENCODING")
    private String fileEncoding;
    @Column(name="LOCKED_SWITCH", table="ICSR_LOCKING")
    private int lockedSwitch;
    @Column(name="RELEASE_DATETIME", table="ICSR_LOCKING")
    private String releaseDateTime;
    @Column(name="LOCKING_DATETIME", table="ICSR_LOCKING")
    private String lockingDateTime;
    @ManyToOne
    @JoinColumn(name="USER_NO", table="ICSR_LOCKING")
    private User lockedByUser;
 
    public int getIcsrNumber() {
        return icsrNumber;
    }
 
    public void setIcsrNumber(int icsrNumber) {
        this.icsrNumber = icsrNumber;
    }
 
    public User getLockedByUser() {
        return lockedByUser;
    }
 
    public void setLockedByUser(User lockedByUser) {
        this.lockedByUser = lockedByUser;
    }
 
    public int getLockedSwitch() {
        return lockedSwitch;
    }
 
    public void setLockedSwitch(int lockedSwitch) {
        this.lockedSwitch = lockedSwitch;
    }
 
    public String getLockingDateTime() {
        return lockingDateTime;
    }
 
    public void setLockingDateTime(String lockingDateTime) {
        this.lockingDateTime = lockingDateTime;
    }
 
    public String getReleaseDateTime() {
        return releaseDateTime;
    }
 
    public void setReleaseDateTime(String releaseDateTime) {
        this.releaseDateTime = releaseDateTime;
    }
 
    public List<Tracking> getTrackings() {
        return trackings;
    }
 
    public void setTrackings(List<Tracking> trackings) {
        this.trackings = trackings;
    }
 
    public int getApprovalTrackingNumber() {
        return approvalTrackingNumber;
    }
 
    public void setApprovalTrackingNumber(int approvalTrackingNumber) {
        this.approvalTrackingNumber = approvalTrackingNumber;
    }
 
    public String getEmpiricaDate() {
        return empiricaDate;
    }
 
    public void setEmpiricaDate(String empiricaDate) {
        this.empiricaDate = empiricaDate;
    }
 
    public int getEmpiricaICSRType() {
        return empiricaICSRType;
    }
 
    public void setEmpiricaICSRType(int empiricaICSRType) {
        this.empiricaICSRType = empiricaICSRType;
    }
 
    public String getEmpiricaNumber() {
        return empiricaNumber;
    }
 
    public void setEmpiricaNumber(String empiricaNumber) {
        this.empiricaNumber = empiricaNumber;
    }
 
    public int getErrorStatus() {
        return errorStatus;
    }
 
    public void setErrorStatus(int errorStatus) {
        this.errorStatus = errorStatus;
    }
 
    public int getErrorTrackingNumber() {
        return errorTrackingNumber;
    }
 
    public void setErrorTrackingNumber(int errorTrackingNumber) {
        this.errorTrackingNumber = errorTrackingNumber;
    }
 
    public String getFileEncoding() {
        return fileEncoding;
    }
 
    public void setFileEncoding(String fileEncoding) {
        this.fileEncoding = fileEncoding;
    }
 
    public String getFileName() {
        return fileName;
    }
 
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
 
    public int getGatewayType() {
        return gatewayType;
    }
 
    public void setGatewayType(int gatewayType) {
        this.gatewayType = gatewayType;
    }
 
    public User getLastUser() {
        return lastUser;
    }
 
    public void setLastUser(User lastUser) {
        this.lastUser = lastUser;
    }
 
    public String getReceiverNumber() {
        return receiverNumber;
    }
 
    public void setReceiverNumber(String receiverNumber) {
        this.receiverNumber = receiverNumber;
    }
 
    public String getSenderNumber() {
        return senderNumber;
    }
 
    public void setSenderNumber(String senderNumber) {
        this.senderNumber = senderNumber;
    }
 
    public Stage getStage() {
        return stage;
    }
 
    public void setStage(Stage stage) {
        this.stage = stage;
    }
 
    public String getTrackingDateTime() {
        return trackingDateTime;
    }
 
    public void setTrackingDateTime(String trackingDateTime) {
        this.trackingDateTime = trackingDateTime;
    }
    public boolean getIsInError()
    {
        if(stage.getStageNumber() == 35 || stage.getStageNumber() == 85 || stage.getStageNumber() == 125 || stage.getStageNumber() == 155 || stage.getStageNumber() == 190 || stage.getStageNumber() == 230 || stage.getStageNumber() == 280 || stage.getStageNumber() == 330 || stage.getStageNumber() == 370 || stage.getStageNumber() == 390 || stage.getStageNumber() == 440 || stage.getStageNumber() == 10010 || stage.getStageNumber() == 10110 || stage.getStageNumber() == 10210 || stage.getStageNumber() == 10310 || stage.getStageNumber() == 10410 || stage.getStageNumber() == 10510 || stage.getStageNumber() == 10610 || stage.getStageNumber() == 10710 || stage.getStageNumber() == 10810 || stage.getStageNumber() == 10910 || stage.getStageNumber() == 11010 || stage.getStageNumber() == 11110 || stage.getStageNumber() == 11210)
            return true;
        return false;
    }
    public boolean getIsInErrorAcquired()
    {
        if( stage.getStageNumber() == 45 ||stage.getStageNumber() == 95 ||stage.getStageNumber() == 135 ||stage.getStageNumber() == 200 ||stage.getStageNumber() == 240 ||stage.getStageNumber() == 290 ||stage.getStageNumber() == 340 ||stage.getStageNumber() == 380 ||stage.getStageNumber() == 400 ||stage.getStageNumber() == 450 ||stage.getStageNumber() == 10020 ||stage.getStageNumber() == 10120 ||stage.getStageNumber() == 10220 ||stage.getStageNumber() == 10320 ||stage.getStageNumber() == 10420 ||stage.getStageNumber() == 10520 ||stage.getStageNumber() == 10620 ||stage.getStageNumber() == 10720 ||stage.getStageNumber() == 10820 ||stage.getStageNumber() == 10920 ||stage.getStageNumber() == 11020 ||stage.getStageNumber() == 11120 ||stage.getStageNumber() == 11220)
            return true;
        return false;
    }
}
et mon dao

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package com.icsr.dao;
 
import com.icsr.entity.Icsr;
import com.icsr.entity.Tracking;
import java.util.List;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceUnit;
import javax.persistence.Query;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;
 
/**
 *
 * @author E131631
 */
public class IcsrDao {
    @Resource
    private UserTransaction utx = null;
    @PersistenceUnit(unitName = "icsr")
    private EntityManagerFactory emf = null;
 
    public EntityManager getEntityManager()
    {
        return emf.createEntityManager();
    }
 
    public void update(Icsr icsr)throws SystemException
    {
        EntityManager em = null;
        try
        {
            utx.begin();
            em = getEntityManager();
            icsr = em.merge(icsr);
            utx.commit();
            em.close();
        }
        catch (Exception ex)
        {
            utx.rollback();
        }
    }
    public Icsr getIcsr(int id)
    {
        EntityManager em = getEntityManager();
        Icsr icsr = em.find(Icsr.class, id);
        em.close();
        return icsr;
    }
    public List<Icsr> getIcsrs()
    {
        EntityManager em = getEntityManager();
        try
        {
            Query query = em.createQuery("select i from Icsr i");
            return query.getResultList();
        }
        finally
        {
            em.close();
        }
    }
    public List<Tracking> getTrackings(String empiricaNumber)
    {
        EntityManager em = getEntityManager();
        try
        {
            Query query = em.createQuery("select t from Tracking t where t.empiricaNumber = :empiricaNumber");
            query.setParameter("empiricaNumber", empiricaNumber);
            return query.getResultList();
        }
        finally
        {
            em.close();
        }
    }
    public List<Icsr> getReadyForSubmissionIcsrs()
    {
        EntityManager em = getEntityManager();
        try
        {
            Query query = em.createQuery("select i from Icsr i where i.stage.stageNumber = 140");
            return query.getResultList();
        }
        finally
        {
            em.close();
        }
    }
    public List<Icsr> getReadyForAckIcsrs()
    {
        EntityManager em = getEntityManager();
        try
        {
            Query query = em.createQuery("select i from Icsr i where i.stage.stageNumber = 300");
            return query.getResultList();
        }
        finally
        {
            em.close();
        }
    }
    public List<Icsr> getReadyForArchiveIcsrs()
    {
        EntityManager em = getEntityManager();
        try
        {
            Query query = em.createQuery("select i from Icsr i where i.stage.stageNumber = 460");
            return query.getResultList();
        }
        finally
        {
            em.close();
        }
    }
}
Merci pour votre aide !