Bonjour,
Voici mon persistence.xml :
Dans mon code j'ai un select suivi par après d'un insert et un update :
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 <persistence-unit name="****"> <jta-data-source>Datasource</jta-data-source> <class>core.entities.RequestProperties</class> <class>core.entities.Requests</class> <class>core.entities.RequestStatus</class> <class>core.entities.ResponseProperties</class> <class>core.entities.Status</class> <properties> <property name="openjpa.ConnectionDriverName" value="com.ibm.db2.jcc.DB2Driver"/> <property name="openjpa.TransactionMode" value="managed"/> <property name="openjpa.Log" value="DefaultLevel=WARN,Runtime=INFO,Tool=INFO,SQL=TRACE"/> <property name="dialect" value="org.apache.openjpa.jdbc.sql.DB2Dictionary"/> </properties> </persistence-unit> </persistence>
ces 2 méthodes sont appellée l'une après l'autre d'un EJB dont le transactionMode est a requires_new...
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 public List getRequestsByStatus(Status status){ /*Query query = this.getEm().createQuery("select ID from Requests");*/ Query query = this.getEm().createNamedQuery(Requests.QUERY_REQUESTS_BY_STATUS); query.setParameter("statusId", status.getId()); return query.getResultList(); } @TransactionAttribute(value=TransactionAttributeType.REQUIRED) public void updateRequestStatus(Requests request, Status status, String remark) { if(request.getId() == null){ this.getEm().persist(request); } RequestStatus rs = new RequestStatus(); rs.setDate(new Date()); rs.setRemark(remark==null?"":remark.substring(0,255)); rs.setStatus(status); rs.setRequests(request); this.getEm().clear(); this.getEm().persist(rs); request.setActualStatus(rs); this.getEm().clear(); this.getEm().merge(request); }
La première me retourne bien les données attendue, par contre la deuxième, n'insére rien et n'update rien. C'est comme si il y avait un rollback mais je n'ai pas d'exception visible en console.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 @TransactionAttribute(value=TransactionAttributeType.REQUIRES_NEW) public void findNewRequestsAndSend() {
Est ce que quelqu'un à une idée ?
Partager